Index: trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 9891)
+++ trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 9892)
@@ -1116,4 +1116,6 @@
     eph._receptStaID = _staID;
 
+    eph._flags_unknown = true;
+
     GETBITS(sv, 6)
     eph._prn.set('R', sv);
@@ -1123,4 +1125,5 @@
     GETBITS(eph._almanac_health, 1) /* almanac healthy */
     GETBITS(eph._almanac_health_availablility_indicator, 1) /* almanac health ok */
+/*
     if (eph._almanac_health_availablility_indicator == 0.0) {
 #ifdef BNC_DEBUG_BCEP
@@ -1129,6 +1132,7 @@
            .arg(eph._almanac_health_availablility_indicator).toLatin1(), true));
 #endif
-      //return false;
-    }
+      return false;
+    }
+*/
     GETBITS(eph._P1, 2) /*  P1 */
     GETBITS(i, 5)
Index: trunk/BNC/src/ephemeris.cpp
===================================================================
--- trunk/BNC/src/ephemeris.cpp	(revision 9891)
+++ trunk/BNC/src/ephemeris.cpp	(revision 9892)
@@ -830,10 +830,8 @@
   if (rnxVersion >= 3.05) {
     nLines += 1;
-    _flags_unknown = false;
   }
   else {
     _M_delta_tau = 0.9999e9; // unknown
     _M_FT = 1.5e1;           // unknown
-    _flags_unknown = true;
   }
 
@@ -941,12 +939,10 @@
     // =====================
     else if ( iLine == 4 ) {
-      if ( readDbl(line, pos[0], fieldLen, statusflags    )  ||
-           readDbl(line, pos[1], fieldLen, _M_delta_tau   )  ||
-           readDbl(line, pos[2], fieldLen, _M_FT          )  ||
-           readDbl(line, pos[3], fieldLen, healthflags    ) ) {
-        _checkState = bad;
-        return;
+      if (readDbl(line, pos[0], fieldLen, statusflags    ) ) {
+        //statusflags BLK, do nothing
+        _flags_unknown = true;
       }
       else {
+        _flags_unknown = false;
         // status flags
         // ============
@@ -968,4 +964,16 @@
           _M_P  = 0.0;
         }
+      }
+      if ( readDbl(line, pos[1], fieldLen, _M_delta_tau   )  ||
+           readDbl(line, pos[2], fieldLen, _M_FT          ) ) {
+        _checkState = bad;
+        return;
+      }
+      if (readDbl(line, pos[3], fieldLen, healthflags    ) ) {
+        // healthflags BLK
+        _flags_unknown = true;
+      }
+      else {
+        _flags_unknown = false;
         // health flags
         // ============
