Index: trunk/BNC/src/ephemeris.cpp
===================================================================
--- trunk/BNC/src/ephemeris.cpp	(revision 8927)
+++ trunk/BNC/src/ephemeris.cpp	(revision 8931)
@@ -302,9 +302,12 @@
       // fitInterval is not valid for IRNSS
       if (type() != t_eph::IRNSS) {
-        // Rinex 3.04:
         double fitIntervalRnx;
         readDbl(line, pos[1], fieldLen, fitIntervalRnx);
-        if        (type() == t_eph::GPS) {  // specified as time period for GPS
-          _fitInterval = fitIntervalRnx;
+        if        (type() == t_eph::GPS) {
+          if (rnxVersion < 3.03) {// specified as flag for GPS
+            _fitInterval = fitIntervalFromFlag(fitIntervalRnx, _IODC, t_eph::GPS);
+          } else {                // specified as time period for GPS since 3.03
+            _fitInterval = fitIntervalRnx;
+          }
         } else if (type() == t_eph::QZSS) { // specified as flag for QZSS
           _fitInterval = fitIntervalFromFlag(fitIntervalRnx, _IODC, t_eph::QZSS);
@@ -314,4 +317,5 @@
   }
 }
+
 
 // Compute GPS Satellite Position (virtual)
@@ -488,7 +492,14 @@
   }
   else {
-    // Rinex 3.04:
-    double fitIntervalRnx = _fitInterval; // specified as time period in hours for GPS
-    if (type() == t_eph::QZSS) {          // specified as flag for QZSS
+    double fitIntervalRnx;
+    if      (type() == t_eph::GPS) {
+      if (version < 3.03) { // specified as flag)
+        (_fitInterval == 4.0) ? fitIntervalRnx = 0.0 : fitIntervalRnx = 1.0;
+      }
+      else {
+        fitIntervalRnx = _fitInterval; // specified as time period in hours
+      }
+    }
+    else if (type() == t_eph::QZSS) {    // specified as flag
       (_fitInterval == 2.0) ? fitIntervalRnx = 0.0 : fitIntervalRnx = 1.0;
     }
@@ -499,5 +510,4 @@
       .arg("",             19, QChar(' '));
   }
-
   return rnxStr;
 }
