Index: trunk/BNC/bncmodel.cpp
===================================================================
--- trunk/BNC/bncmodel.cpp	(revision 3105)
+++ trunk/BNC/bncmodel.cpp	(revision 3106)
@@ -217,26 +217,4 @@
   }
 
-  unsigned nPar = _params.size();
-
-  _QQ.ReSize(nPar); 
-
-  _QQ = 0.0;
-
-  for (int iPar = 1; iPar <= _params.size(); iPar++) {
-    bncParam* pp = _params[iPar-1];
-    if      (pp->isCrd()) {
-      _QQ(iPar,iPar) = _sigCrd0 * _sigCrd0; 
-    }
-    else if (pp->type == bncParam::RECCLK) {
-      _QQ(iPar,iPar) = _sigClk0 * _sigClk0; 
-    }
-    else if (pp->type == bncParam::TROPO) {
-      _QQ(iPar,iPar) = _sigTrp0 * _sigTrp0; 
-    }
-    else if (pp->type == bncParam::GALILEO_OFFSET) {
-      _QQ(iPar,iPar) = _sigGalileoOffset0 * _sigGalileoOffset0; 
-    }
-  }
-
   // NMEA Output
   // -----------
@@ -448,8 +426,32 @@
   bncSettings settings;
 
+  _time = epoData->tt; // current epoch time
+
+  const double MAXSOLGAP = 60.0;
+
   bool firstCrd = false;
-  if (x() == 0.0 && y() == 0.0 && z() == 0.0) {
+  if (!_lastTimeOK.valid() || _time - _lastTimeOK > MAXSOLGAP) {
     firstCrd = true;
     _startTime = epoData->tt;
+
+    unsigned nPar = _params.size();
+    _QQ.ReSize(nPar); 
+    _QQ = 0.0;
+    for (int iPar = 1; iPar <= _params.size(); iPar++) {
+      bncParam* pp = _params[iPar-1];
+      pp->xx = 0.0;
+      if      (pp->isCrd()) {
+        _QQ(iPar,iPar) = _sigCrd0 * _sigCrd0; 
+      }
+      else if (pp->type == bncParam::RECCLK) {
+        _QQ(iPar,iPar) = _sigClk0 * _sigClk0; 
+      }
+      else if (pp->type == bncParam::TROPO) {
+        _QQ(iPar,iPar) = _sigTrp0 * _sigTrp0; 
+      }
+      else if (pp->type == bncParam::GALILEO_OFFSET) {
+        _QQ(iPar,iPar) = _sigGalileoOffset0 * _sigGalileoOffset0; 
+      }
+    }
   }
 
@@ -622,6 +624,4 @@
   _log.clear();  
 
-  _time = epoData->tt;
-
   if (settings.value("pppSPP").toString() == "PPP") {
     _log += "Precise Point Positioning of Epoch " 
@@ -976,4 +976,5 @@
   writeNMEAstr(QString(strGGA.str().c_str()));
 
+  _lastTimeOK = _time; // remember time of last successful update
   return success;
 }
Index: trunk/BNC/bncmodel.h
===================================================================
--- trunk/BNC/bncmodel.h	(revision 3105)
+++ trunk/BNC/bncmodel.h	(revision 3106)
@@ -130,4 +130,5 @@
 
   bncTime               _time;
+  bncTime               _lastTimeOK;
   QByteArray            _staID;
   QVector<bncParam*>    _params;
