Index: trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 8470)
+++ trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 8472)
@@ -974,5 +974,4 @@
     eph._prn.set('G', i);
     GETBITS(week, 10)
-    week += 1024;
     GETBITS(i, 4)
     eph._ura = accuracyFromIndex(i, eph.type());
@@ -1003,4 +1002,6 @@
     t.set(i * 1000);
     eph._TOEweek = t.gpsw();
+    int numOfRollOvers = int(floor(t.gpsw()/1024.0));
+    week += (numOfRollOvers * 1024);
     /* week from HOW, differs from TOC, TOE week, we use adapted value instead */
     if (eph._TOEweek > week + 1 || eph._TOEweek < week - 1) /* invalid week */
@@ -1127,5 +1128,5 @@
     GETBITS(i, 4)
     eph._prn.set('J', i);
-
+    
     GETBITS(i, 16)
     i <<= 4;
@@ -1162,5 +1163,6 @@
     GETBITS(eph._L2Codes, 2)
     GETBITS(week, 10)
-    week += 1024;
+    int numOfRollOvers = int(floor(t.gpsw()/1024.0));
+    week += (numOfRollOvers * 1024);
     /* week from HOW, differs from TOC, TOE week, we use adapted value instead */
     if (eph._TOEweek > week + 1 || eph._TOEweek < week - 1) /* invalid week */
