Index: trunk/BNC/src/bncephuser.cpp
===================================================================
--- trunk/BNC/src/bncephuser.cpp	(revision 6520)
+++ trunk/BNC/src/bncephuser.cpp	(revision 6521)
@@ -173,5 +173,4 @@
   ColumnVector xc(4);
   ColumnVector vv(3);
-
   if (eph->getCrd(eph->TOC(), xc, vv, false) != success) {
     eph->setCheckState(t_eph::bad);
@@ -181,8 +180,35 @@
   double rr = xc.Rows(1,3).norm_Frobenius();
 
-  if (rr < 2.e7 || rr > 4.e7) {
+  const double MINDIST = 2.e7;
+  const double MAXDIST = 4.e7;
+  if (rr < MINDIST || rr > MAXDIST) {
     eph->setCheckState(t_eph::bad);
     return;
   }
 
-}
+  // Check consistency with older ephemerides
+  // ----------------------------------------
+  const double MAXDIFF = 100.0;
+  QString      prn     = QString(eph->prn().toString().c_str());
+  t_eph*       ephL    = ephLast(prn);
+  if (ephL) {
+    ColumnVector xcL(4);
+    ColumnVector vvL(3);
+    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();
+
+    if (diff < MAXDIFF) {
+      if (dt != 0.0) {
+        eph->setCheckState(t_eph::ok);
+        ephL->setCheckState(t_eph::ok);
+      }
+    }
+    else {
+      if (ephL->checkState() == t_eph::ok) {
+        eph->setCheckState(t_eph::bad);
+      }
+    }
+  }
+}
Index: trunk/BNC/src/ephemeris.h
===================================================================
--- trunk/BNC/src/ephemeris.h	(revision 6520)
+++ trunk/BNC/src/ephemeris.h	(revision 6521)
@@ -20,5 +20,5 @@
  public:
   enum e_type {unknown, GPS, QZSS, GLONASS, Galileo, SBAS, Compass};
-  enum e_checkState {unchecked, ok, suspicious, bad};
+  enum e_checkState {unchecked, ok, bad};
 
   t_eph();
