Index: trunk/BNC/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- trunk/BNC/RTCM3/RTCM3coDecoder.cpp	(revision 905)
+++ trunk/BNC/RTCM3/RTCM3coDecoder.cpp	(revision 906)
@@ -49,4 +49,5 @@
 RTCM3coDecoder::RTCM3coDecoder(const QString& fileName) 
   : bncZeroDecoder(fileName) {
+  _mmi = 0;
 }
 
@@ -63,14 +64,33 @@
 
   while (true) {
+
+    if (_mmi == 0) {
+      memset(&_co, 0, sizeof(_co));
+    }
+
     int bytesused = 0;
-    memset(&_co, 0, sizeof(_co));
     GCOB_RETURN irc = GetClockOrbitBias(&_co, &_bias, _buffer.data(), 
                                         _buffer.size(), &bytesused);
 
+    // Multiple Message Flag
+    // ---------------------
+    if (irc == GCOBR_MESSAGEFOLLOWS) {
+      _mmi = 1;
+      _buffer = _buffer.substr(bytesused);
+      return success;
+    }
+    else {
+      _mmi = 0;
+    }
+
+    // Not enough Data
+    // ---------------
     if      (irc == GCOBR_SHORTBUFFER ||
-             irc == GCOBR_MESSAGEEXCEEDSBUFFER) {  // not enough data
+             irc == GCOBR_MESSAGEEXCEEDSBUFFER) {
       return failure;
     }
     
+    // Message correctly decoded
+    // -------------------------
     else if (irc == GCOBR_OK && bytesused > 0) {
       reopen();
@@ -97,4 +117,6 @@
     }
 
+    // All other Cases
+    // ---------------
     else {
       _buffer = _buffer.substr(1);
Index: trunk/BNC/RTCM3/RTCM3coDecoder.h
===================================================================
--- trunk/BNC/RTCM3/RTCM3coDecoder.h	(revision 905)
+++ trunk/BNC/RTCM3/RTCM3coDecoder.h	(revision 906)
@@ -41,4 +41,5 @@
   ClockOrbit  _co;
   Bias        _bias;
+  int         _mmi;
 } ;
 
