Index: trunk/BNC/src/bnccaster.cpp
===================================================================
--- trunk/BNC/src/bnccaster.cpp	(revision 5523)
+++ trunk/BNC/src/bnccaster.cpp	(revision 5524)
@@ -175,74 +175,79 @@
 // New Observations
 ////////////////////////////////////////////////////////////////////////////
-void bncCaster::newObs(const QByteArray staID, bool firstObs, t_obs obs) {
+void bncCaster::slotNewObs(const QByteArray staID, QList<t_obs> obsList) {
 
   QMutexLocker locker(&_mutex);
 
-  long iSec    = long(floor(obs.GPSWeeks+0.5));
-  long newTime = obs.GPSWeek * 7*24*3600 + iSec;
-
-  // Rename the Station
-  // ------------------
-  strncpy(obs.StatID, staID.constData(),sizeof(obs.StatID));
-  obs.StatID[sizeof(obs.StatID)-1] = '\0';
-
-  // Output into the socket
-  // ----------------------
-  if (_uSockets) {
-
-    ostringstream oStr;
-    oStr.setf(ios::showpoint | ios::fixed);
-    oStr << obs.StatID                                        << " " 
-         << obs.GPSWeek                                       << " "
-         << setprecision(7) << obs.GPSWeeks                   << " "
-         << bncRinex::asciiSatLine(obs) << endl;
-
-    string hlpStr = oStr.str();
-
-    QMutableListIterator<QTcpSocket*> is(*_uSockets);
-    while (is.hasNext()) {
-      QTcpSocket* sock = is.next();
-      if (sock->state() == QAbstractSocket::ConnectedState) {
-        int numBytes = hlpStr.length();
-        if (myWrite(sock, hlpStr.c_str(), numBytes) != numBytes) {
+  long newTime = 0;
+  QMutableListIterator<t_obs> it(obsList);
+  while (it.hasNext()) {
+
+    t_obs& obs = it.next();
+
+    long iSec    = long(floor(obs.GPSWeeks+0.5));
+    newTime = obs.GPSWeek * 7*24*3600 + iSec;
+    
+    // Rename the Station
+    // ------------------
+    strncpy(obs.StatID, staID.constData(),sizeof(obs.StatID));
+    obs.StatID[sizeof(obs.StatID)-1] = '\0';
+    
+    // Output into the socket
+    // ----------------------
+    if (_uSockets) {
+    
+      ostringstream oStr;
+      oStr.setf(ios::showpoint | ios::fixed);
+      oStr << obs.StatID                                        << " " 
+           << obs.GPSWeek                                       << " "
+           << setprecision(7) << obs.GPSWeeks                   << " "
+           << bncRinex::asciiSatLine(obs) << endl;
+    
+      string hlpStr = oStr.str();
+    
+      QMutableListIterator<QTcpSocket*> is(*_uSockets);
+      while (is.hasNext()) {
+        QTcpSocket* sock = is.next();
+        if (sock->state() == QAbstractSocket::ConnectedState) {
+          int numBytes = hlpStr.length();
+          if (myWrite(sock, hlpStr.c_str(), numBytes) != numBytes) {
+            delete sock;
+            is.remove();
+          }
+        }
+        else if (sock->state() != QAbstractSocket::ConnectingState) {
           delete sock;
           is.remove();
         }
       }
-      else if (sock->state() != QAbstractSocket::ConnectingState) {
-        delete sock;
-        is.remove();
-      }
-    }
-  }
-
-  // First time, set the _lastDumpSec immediately
-  // --------------------------------------------
-  if (_lastDumpSec == 0) {
-    _lastDumpSec = newTime - 1;
-  }
-
-  // An old observation - throw it away
-  // ----------------------------------
-  if (newTime <= _lastDumpSec) {
-    if (firstObs) {
+    }
+    
+    // First time, set the _lastDumpSec immediately
+    // --------------------------------------------
+    if (_lastDumpSec == 0) {
+      _lastDumpSec = newTime - 1;
+    }
+    
+    // An old observation - throw it away
+    // ----------------------------------
+    if (newTime <= _lastDumpSec) {
       bncSettings settings;
       if ( !settings.value("outFile").toString().isEmpty() || 
            !settings.value("outPort").toString().isEmpty() ) { 
-
-	QTime enomtime = QTime(0,0,0).addSecs(iSec);
-
+    
+        QTime enomtime = QTime(0,0,0).addSecs(iSec);
+    
         emit( newMessage(QString("%1: Old epoch %2 (%3) thrown away")
-			 .arg(staID.data()).arg(iSec)
-			 .arg(enomtime.toString("HH:mm:ss"))
-			 .toAscii(), true) );
-      }
-    }
-    return;
-  }
-
-  // Save the observation
-  // --------------------
-  _epochs->insert(newTime, obs);
+        		 .arg(staID.data()).arg(iSec)
+        		 .arg(enomtime.toString("HH:mm:ss"))
+        		 .toAscii(), true) );
+      }
+      return;
+    }
+    
+    // Save the observation
+    // --------------------
+    _epochs->insert(newTime, obs);
+  }
 
   // Dump Epochs
@@ -279,15 +284,16 @@
 
   qRegisterMetaType<t_obs>("t_obs");
+  qRegisterMetaType< QList<t_obs> >("QList<t_obs>");
   qRegisterMetaType<gpsephemeris>("gpsephemeris");
   qRegisterMetaType<glonassephemeris>("glonassephemeris");
   qRegisterMetaType<galileoephemeris>("galileoephemeris");
 
-  connect(getThread, SIGNAL(newObs(QByteArray, bool, t_obs)),
-          this,      SLOT(newObs(QByteArray, bool, t_obs)));
+  connect(getThread, SIGNAL(newObs(QByteArray, QList<t_obs>)),
+          this,      SLOT(slotNewObs(QByteArray, QList<t_obs>)));
 
 #ifdef RTROVER_INTERFACE
   if (_bncRtrover) {
-    connect(getThread, SIGNAL(newObs(QByteArray, bool, t_obs)),
-            _bncRtrover, SLOT(slotNewObs(QByteArray, bool, t_obs)));
+    connect(getThread, SIGNAL(newObs(QByteArray, QList<t_obs>)),
+            _bncRtrover, SLOT(slotNewObs(QByteArray, QList<t_obs>)));
   }
 #endif
Index: trunk/BNC/src/bnccaster.h
===================================================================
--- trunk/BNC/src/bnccaster.h	(revision 5523)
+++ trunk/BNC/src/bnccaster.h	(revision 5524)
@@ -48,5 +48,5 @@
 
  public slots:
-   void newObs(QByteArray staID, bool firstObs, t_obs obs);
+   void slotNewObs(QByteArray staID, QList<t_obs> obsList);
    void slotNewNMEAstr(QByteArray str);
 
Index: trunk/BNC/src/bncgetthread.cpp
===================================================================
--- trunk/BNC/src/bncgetthread.cpp	(revision 5523)
+++ trunk/BNC/src/bncgetthread.cpp	(revision 5524)
@@ -45,4 +45,5 @@
 #include <QFile>
 #include <QTextStream>
+#include <QMutex>
 #include <QtNetwork>
 #include <QTime>
@@ -498,5 +499,7 @@
       // ------------------------------------------------
       QListIterator<t_obs> it(decoder()->_obsList);
-      bool firstObs = true;
+
+      QList<t_obs> obsListHlp;
+
       while (it.hasNext()) {
         const t_obs& obs = it.next();
@@ -550,12 +553,15 @@
         }
 #endif
-
-        // Emit new observation signal
-        // ---------------------------
-        if (!_isToBeDeleted) {
-          emit newObs(_staID, firstObs, obs);
-        }
-        firstObs = false;
-      }
+        // Save observations
+        // -----------------
+        obsListHlp.append(obs);
+      }
+
+      // Emit signal
+      // -----------
+      if (!_isToBeDeleted && obsListHlp.size() > 0) {
+        emit newObs(_staID, obsListHlp);
+      }
+
       decoder()->_obsList.clear();
     }
Index: trunk/BNC/src/bncgetthread.h
===================================================================
--- trunk/BNC/src/bncgetthread.h	(revision 5523)
+++ trunk/BNC/src/bncgetthread.h	(revision 5524)
@@ -78,5 +78,5 @@
    void newBytes(QByteArray staID, double nbyte);
    void newLatency(QByteArray staID, double clate);
-   void newObs(QByteArray staID, bool firstObs, t_obs obs);
+   void newObs(QByteArray staID, QList<t_obs> obsList);
    void newAntCrd(QByteArray staID, double xx, double yy, double zz, 
                   double hh, QByteArray antType);
