Index: trunk/BNC/src/bncephuser.cpp
===================================================================
--- trunk/BNC/src/bncephuser.cpp	(revision 8708)
+++ trunk/BNC/src/bncephuser.cpp	(revision 8709)
@@ -120,6 +120,4 @@
   }
 
-  checkEphemeris(eph, realTime);
-
   const t_ephGPS*     ephGPS     = dynamic_cast<const t_ephGPS*>(eph);
   const t_ephGlo*     ephGlo     = dynamic_cast<const t_ephGlo*>(eph);
@@ -159,7 +157,14 @@
   }
 
-  if ((ephOld == 0 || newEph->isNewerThan(ephOld)) &&
-      (eph->checkState() != t_eph::bad &&
-       eph->checkState() != t_eph::outdated)) {
+  if (ephOld == 0 || newEph->isNewerThan(ephOld)) {
+    checkEphemeris(eph, realTime);
+  }
+  else {
+    delete newEph;
+    return failure;
+  }
+
+  if (eph->checkState() != t_eph::bad &&
+       eph->checkState() != t_eph::outdated) {
     deque<t_eph*>& qq = _eph[prn];
     qq.push_back(newEph);
