Index: /branches/BNC_2.12/src/ephemeris.cpp
===================================================================
--- /branches/BNC_2.12/src/ephemeris.cpp	(revision 8928)
+++ /branches/BNC_2.12/src/ephemeris.cpp	(revision 8929)
@@ -306,9 +306,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);
@@ -484,5 +487,5 @@
   }
   // fitInterval
-  if (type() == t_eph::IRNSS) {           // not valid for IRNSS
+  if (type() == t_eph::IRNSS) {            // not valid for IRNSS
     out << QString(fmt)
       .arg(tot,          19, 'e', 12)
@@ -492,7 +495,9 @@
   }
   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 = _fitInterval; // specified as time period in hours for GPS since RINEX 3.03
+    if      (type() == t_eph::GPS && version < 3.03) { // specified as flag in versions < 3.03
+      (_fitInterval == 4.0) ? fitIntervalRnx = 0.0 : fitIntervalRnx = 1.0;
+    }
+    else if (type() == t_eph::QZSS) {    // specified as flag for QZSS
       (_fitInterval == 2.0) ? fitIntervalRnx = 0.0 : fitIntervalRnx = 1.0;
     }
