Index: trunk/BNC/src/RTCM3/ephEncoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/ephEncoder.cpp	(revision 6619)
+++ trunk/BNC/src/RTCM3/ephEncoder.cpp	(revision 6620)
@@ -350,5 +350,5 @@
   BDSADDBITS(6, eph._prn.number())
   BDSADDBITS(13, eph._TOC_bdt.gpsw() - 1356.0)
-  BDSADDBITS(4, 15);// URAI = 15: no accuracy prediction
+  BDSADDBITS(4, eph._URAI);
   BDSADDBITSFLOAT(14, eph._IDOT, M_PI/static_cast<double>(1<<30)/static_cast<double>(1<<13))
   BDSADDBITS(5, eph._AODE)
Index: trunk/BNC/src/ephemeris.cpp
===================================================================
--- trunk/BNC/src/ephemeris.cpp	(revision 6619)
+++ trunk/BNC/src/ephemeris.cpp	(revision 6620)
@@ -1515,4 +1515,5 @@
   _TGD2     = ee->TGD_B2_B3;
 
+  _URAI     = ee->URAI;
   _SatH1    = ee->flags & BDSEPHF_SATH1;
 
@@ -1694,6 +1695,14 @@
     .arg(0.0,                              19, 'e', 12);
 
-  out << QString(fmt)
-    .arg(0.0,            19, 'e', 12)
+  double ura = 0.0;
+  if ((_URAI <  6) && (_URAI >= 0)) {
+    ura = ceil(10.0 * pow(2.0, ((double)_URAI/2.0) + 1.0)) / 10.0;
+  }
+  if ((_URAI >= 6) && (_URAI < 15)) {
+    ura = ceil(10.0 * pow(2.0, ((double)_URAI/2.0)      )) / 10.0;
+  }
+
+  out << QString(fmt)
+    .arg(ura,            19, 'e', 12)
     .arg(double(_SatH1), 19, 'e', 12)
     .arg(_TGD1,          19, 'e', 12)
Index: trunk/BNC/src/ephemeris.h
===================================================================
--- trunk/BNC/src/ephemeris.h	(revision 6619)
+++ trunk/BNC/src/ephemeris.h	(revision 6620)
@@ -260,4 +260,5 @@
   int     _AODE;
   int     _AODC;
+  int     _URAI;             //  [0..15]
   double  _clock_bias;       //  [s]    
   double  _clock_drift;      //  [s/s]  
