Index: trunk/BNC/GPSS/gpssDecoder.cpp
===================================================================
--- trunk/BNC/GPSS/gpssDecoder.cpp	(revision 1430)
+++ trunk/BNC/GPSS/gpssDecoder.cpp	(revision 1431)
@@ -15,4 +15,6 @@
  *
  * -----------------------------------------------------------------------*/
+
+#include <iostream>
 
 #include "gpssDecoder.h"
@@ -69,11 +71,15 @@
     // ------------
     if      (char(_buffer[1]) == 0x00) {
-      EPOCHHEADER epochHdr;
-      if (_buffer.length() >= int(2 + sizeof(recordSize) + sizeof(epochHdr))) {
+
+      int reqLength = 2 + sizeof(recordSize) + sizeof(EPOCHHEADER);
+
+      cout << "Obs: " << _buffer.length() << " " << reqLength << endl;
+
+      if (_buffer.length() >= reqLength) {
+        EPOCHHEADER epochHdr;
         memcpy(&epochHdr, _buffer.data() + 2 + sizeof(recordSize), 
                sizeof(epochHdr));
-
-        int reqLength = 2 + sizeof(recordSize) + sizeof(epochHdr) +
-          epochHdr.n_svs * sizeof(t_obsInternal) + sizeof(crc) + 1;
+        
+        reqLength += epochHdr.n_svs * sizeof(t_obsInternal) + sizeof(crc) + 1;
 
         if (_buffer.length() >= reqLength) {
@@ -87,4 +93,5 @@
         }
       }
+      _buffer.mid(reqLength);
     }
 
@@ -94,4 +101,7 @@
       int reqLength = 2 + sizeof(recordSize) + sizeof(gpsephemeris) +
         sizeof(crc) + 1;
+
+      cout << "Eph: " << _buffer.length() << " " << reqLength << endl;
+
       if (_buffer.length() >= reqLength) {
         gpsephemeris* gpsEph = new gpsephemeris;
@@ -100,4 +110,5 @@
         emit newGPSEph(gpsEph);
       }
+      _buffer.mid(reqLength);
     }
 
