Index: branches/BNC_2.12/src/RTCM3/RTCM3Decoder.cpp
===================================================================
--- branches/BNC_2.12/src/RTCM3/RTCM3Decoder.cpp	(revision 8854)
+++ branches/BNC_2.12/src/RTCM3/RTCM3Decoder.cpp	(revision 8855)
@@ -1082,7 +1082,5 @@
     GETBITS(eph._L2PFlag, 1)
     GETBITS(fitIntervalFalg, 1)
-    if (fitIntervalFalg == 0) {
-      eph._fitInterval = 4.0;
-    }
+    eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph.type());
     eph._TOT = 0.9999e9;
 
@@ -1247,7 +1245,5 @@
     GETBITS(eph._IODC, 10)
     GETBITS(fitIntervalFalg, 1)
-    if (fitIntervalFalg == 0) {
-      eph._fitInterval = 2.0;
-    }
+    eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph.type());
     eph._TOT = 0.9999e9;
 
Index: branches/BNC_2.12/src/bncutils.cpp
===================================================================
--- branches/BNC_2.12/src/bncutils.cpp	(revision 8854)
+++ branches/BNC_2.12/src/bncutils.cpp	(revision 8855)
@@ -807,4 +807,6 @@
 }
 
+//
+////////////////////////////////////////////////////////////////////////////
 double accuracyFromIndex(int index, t_eph::e_type type) {
 double accuracy = -1.0;
@@ -868,5 +870,6 @@
 }
 
-
+//
+////////////////////////////////////////////////////////////////////////////
 int indexFromAccuracy(double accuracy, t_eph::e_type type) {
 
@@ -944,4 +947,40 @@
 
   return (type == t_eph::Galileo) ? 255 : 15;
+}
+
+// Returns fit interval in hours from flag
+////////////////////////////////////////////////////////////////////////////
+double fitIntervalFromFlag(int flag, double iodc, t_eph::e_type type) {
+  double fitInterval = 0.0;
+
+  switch (flag) {
+    case 0:
+      if      (type == t_eph::GPS) {
+        fitInterval = 4.0;
+      }
+      else if (type == t_eph::QZSS) {
+        fitInterval = 2.0;
+      }
+      break;
+    case 1:
+      if (type == t_eph::GPS) {
+        if      (iodc >= 240 && iodc <= 247) {
+          fitInterval =  8.0;
+        }
+        else if ((iodc >= 248 && iodc <= 255) ||
+                 (iodc == 496) ) {
+          fitInterval = 14.0;
+        }
+        else if ((iodc >=  497 && iodc <=  503) ||
+                 (iodc >= 2021 && iodc <= 1023) ) {
+          fitInterval = 26.0;
+        }
+        else {
+          fitInterval =  6.0;
+        }
+      }
+      break;
+  }
+  return fitInterval;
 }
 
Index: branches/BNC_2.12/src/bncutils.h
===================================================================
--- branches/BNC_2.12/src/bncutils.h	(revision 8854)
+++ branches/BNC_2.12/src/bncutils.h	(revision 8855)
@@ -137,4 +137,6 @@
 
 int          indexFromAccuracy(double accuracy, t_eph::e_type type);
+
+double       fitIntervalFromFlag(int flag, double iodc, t_eph::e_type type);
 
 double       associatedLegendreFunction(int n, int m, double t);
