Index: /trunk/BNC/src/bnccaster.cpp
===================================================================
--- /trunk/BNC/src/bnccaster.cpp	(revision 9015)
+++ /trunk/BNC/src/bnccaster.cpp	(revision 9016)
@@ -176,4 +176,8 @@
     obs._staID = staID.data();
 
+    // Update/Set Slip Counters
+    // ------------------------
+    setSlipCounters(obs);
+    
     // Output into the socket
     // ----------------------
@@ -573,2 +577,43 @@
                    .arg(_miscSockets->size()).toLatin1(), true) );
 }
+
+// Set/Update Slip Counters 
+////////////////////////////////////////////////////////////////////////////
+void bncCaster::setSlipCounters(t_satObs& obs) {
+
+  double minLockTime = -1.0;
+  for (unsigned ii = 0; ii < obs._obs.size(); ii++) {
+    const t_frqObs* frqObs = obs._obs[ii];
+    if (frqObs->_lockTimeValid) {
+      if (minLockTime == -1.0 || minLockTime < frqObs->_lockTime) {
+        minLockTime = frqObs->_lockTime;
+      }
+    }
+  }
+
+  if (minLockTime == -1.0) {
+    return;
+  }
+
+  QMap<t_prn, double>& hlpMap = _lockTimeMap[obs._staID];
+  QMap<t_prn, double>::const_iterator it = hlpMap.find(obs._prn);
+  if (it == hlpMap.end()) {
+    hlpMap[obs._prn] = minLockTime;
+    for (unsigned ii = 0; ii < obs._obs.size(); ii++) {
+      t_frqObs* frqObs = obs._obs[ii];
+      frqObs->_slipCounter = 0;
+    }
+  }
+  else {
+    if (hlpMap[obs._prn] < minLockTime) {
+      hlpMap[obs._prn] = minLockTime;
+      for (unsigned ii = 0; ii < obs._obs.size(); ii++) {
+        t_frqObs* frqObs = obs._obs[ii];
+        frqObs->_slipCounter += 1;
+        if (frqObs->_slipCounter > 9999) {
+          frqObs->_slipCounter = 0;
+        }
+      }
+    }
+  }
+}
Index: /trunk/BNC/src/bnccaster.h
===================================================================
--- /trunk/BNC/src/bnccaster.h	(revision 9015)
+++ /trunk/BNC/src/bnccaster.h	(revision 9016)
@@ -67,4 +67,5 @@
    static int myWrite(QTcpSocket* sock, const char* buf, int bufLen);
    void reopenOutFile();
+   void setSlipCounters(t_satObs& obs);
 
    QFile*                          _outFile;
@@ -87,4 +88,5 @@
    QTcpServer*                     _miscServer;
    QList<QTcpSocket*>*             _miscSockets;
+   QMap<std::string, QMap<t_prn, double> > _lockTimeMap;
 };
 
