Index: trunk/BNC/src/bncephuser.cpp
===================================================================
--- trunk/BNC/src/bncephuser.cpp	(revision 7860)
+++ trunk/BNC/src/bncephuser.cpp	(revision 7861)
@@ -161,5 +161,5 @@
 
   if ((ephOld == 0 || newEph->isNewerThan(ephOld)) &&
-      (eph->checkState() != t_eph::bad ||
+      (eph->checkState() != t_eph::bad &&
        eph->checkState() != t_eph::outdated)) {
     deque<t_eph*>& qq = _eph[prn];
@@ -248,4 +248,5 @@
   QString      prn     = QString(eph->prn().toInternalString().c_str());
   t_eph*       ephL    = ephLast(prn);
+
   if (ephL) {
     ColumnVector xcL(4);
@@ -253,6 +254,7 @@
     ephL->getCrd(eph->TOC(), xcL, vvL, false);
 
-    double dt   = eph->TOC() - ephL->TOC();
-    double diff = (xc.Rows(1,3) - xcL.Rows(1,3)).norm_Frobenius();
+    double dt    = eph->TOC() - ephL->TOC();
+    double diff  = (xc.Rows(1,3) - xcL.Rows(1,3)).norm_Frobenius();
+    double diffC = fabs(xc(4) - xcL(4)) * t_CST::c;
 
     // some lines to allow update of ephemeris data sets after outage
@@ -282,5 +284,5 @@
     }
 
-    if (diff < MAXDIFF) {
+    if (diff < MAXDIFF && diffC < MAXDIFF) {
       if (dt != 0.0) {
         eph->setCheckState(t_eph::ok);
