Index: /trunk/BNC/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- /trunk/BNC/RTCM3/RTCM3coDecoder.cpp	(revision 1832)
+++ /trunk/BNC/RTCM3/RTCM3coDecoder.cpp	(revision 1833)
@@ -136,13 +136,15 @@
                                         _buffer.size(), &bytesused);
 
-    if      (irc <= -30) { // not enough data
+    if      (irc <= -30) { // not enough data - restore state and exit loop
       memcpy(&_co, &co_sav, sizeof(co_sav));
-      if (retCode != success) {
-        _GPSweeks = -1.0;
-      }
-      return retCode;
-    }
-
-    else if (irc >= 0) {  // OK or MESSAGEFOLLOWS
+      break;
+    }
+
+    else if (irc < 0) {    // error  - skip 1 byte and retry
+      memset(&_co, 0, sizeof(_co));
+      _buffer = _buffer.mid(1);
+    }
+
+    else {                 // OK or MESSAGEFOLLOWS
       _buffer = _buffer.mid(bytesused);
 
@@ -207,11 +209,9 @@
       }
     }
-
-    else { // error  - skip 1 byte and retry
-      memset(&_co, 0, sizeof(_co));
-      _buffer = _buffer.mid(1);
-    }
-  }
-
+  }
+
+  if (retCode != success) {
+    _GPSweeks = -1.0;
+  }
   return retCode;
 }
