Index: trunk/BNC/src/bnccore.cpp
===================================================================
--- trunk/BNC/src/bnccore.cpp	(revision 7207)
+++ trunk/BNC/src/bnccore.cpp	(revision 7208)
@@ -208,6 +208,10 @@
   QMutexLocker locker(&_mutex);
   t_irc ircPut = _ephUser.putNewEph(eph, true);
-  if (eph->checkState() == t_eph::bad) {
+  if      (eph->checkState() == t_eph::bad) {
     messagePrivate("WRONG EPHEMERIS\n" + eph->toString(3.0).toAscii());
+    return failure;
+  }
+  else if (eph->checkState() == t_eph::outdated) {
+    messagePrivate("OUTDATED EPHEMERIS\n" + eph->toString(3.0).toAscii());
     return failure;
   }
Index: trunk/BNC/src/bncephuser.cpp
===================================================================
--- trunk/BNC/src/bncephuser.cpp	(revision 7207)
+++ trunk/BNC/src/bncephuser.cpp	(revision 7208)
@@ -154,10 +154,13 @@
   const t_eph* ephOld = ephLast(prn);
 
-  if (ephOld && ephOld->checkState() == t_eph::bad) {
+  if (ephOld &&
+      (ephOld->checkState() == t_eph::bad ||
+       ephOld->checkState() == t_eph::outdated)) {
     ephOld = 0;
   }
   
   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];
     qq.push_back(newEph);
@@ -210,5 +213,5 @@
   if      (eph->type() == t_eph::GPS  || t_eph::Galileo) {
     if (timeDiff > 4*3600) { // update interval: 2h, data sets are valid for 4 hours
-      eph->setCheckState(t_eph::bad);
+      eph->setCheckState(t_eph::outdated);
       return;
     }
@@ -216,5 +219,5 @@
   else if (eph->type() == t_eph::GLONASS) {
     if (timeDiff > 1*3600) { // updated every 30 minutes
-      eph->setCheckState(t_eph::bad);
+      eph->setCheckState(t_eph::outdated);
       return;
     }
@@ -222,5 +225,5 @@
   else if (eph->type() == t_eph::QZSS) {
     if (timeDiff > 1*1800) {
-      eph->setCheckState(t_eph::bad);
+      eph->setCheckState(t_eph::outdated);
       return;
     }
@@ -228,5 +231,5 @@
   else if (eph->type() == t_eph::SBAS) {
     if (timeDiff > 600) { // maximum update interval: 300 sec
-      eph->setCheckState(t_eph::bad);
+      eph->setCheckState(t_eph::outdated);
       return;
     }
@@ -234,5 +237,5 @@
   else if (eph->type() == t_eph::BDS) {
     if (timeDiff > 6*3600) { // updates 1 (GEO) up to 6 hours
-      eph->setCheckState(t_eph::bad);
+      eph->setCheckState(t_eph::outdated);
       return;
     }
@@ -256,18 +259,18 @@
     if      ((eph->type() == t_eph::GPS ||
               eph->type() == t_eph::Galileo)  && dt > 4*3600) {
-      ephL->setCheckState(t_eph::bad);
+      ephL->setCheckState(t_eph::outdated);
       return;
     }
     else if ((eph->type() == t_eph::GLONASS ||
               eph->type() == t_eph::QZSS)     && dt > 2*3600) {
-      ephL->setCheckState(t_eph::bad);
+      ephL->setCheckState(t_eph::outdated);
       return;
     }
     else if  (eph->type() == t_eph::SBAS      && dt > 1*3600)   {
-      ephL->setCheckState(t_eph::bad);
+      ephL->setCheckState(t_eph::outdated);
       return;
     }
     else if  (eph->type() == t_eph::BDS       && dt > 6*3600)   {
-      ephL->setCheckState(t_eph::bad);
+      ephL->setCheckState(t_eph::outdated);
       return;
     }
Index: trunk/BNC/src/ephemeris.h
===================================================================
--- trunk/BNC/src/ephemeris.h	(revision 7207)
+++ trunk/BNC/src/ephemeris.h	(revision 7208)
@@ -18,5 +18,5 @@
  public:
   enum e_type {unknown, GPS, QZSS, GLONASS, Galileo, SBAS, BDS};
-  enum e_checkState {unchecked, ok, bad};
+  enum e_checkState {unchecked, ok, bad, outdated};
 
   t_eph();
Index: trunk/BNC/src/rinex/rnxnavfile.cpp
===================================================================
--- trunk/BNC/src/rinex/rnxnavfile.cpp	(revision 7207)
+++ trunk/BNC/src/rinex/rnxnavfile.cpp	(revision 7208)
@@ -200,5 +200,7 @@
       eph = new t_ephBDS(version(), lines);
     }
-    if (eph && eph->checkState() != t_eph::bad) {
+    if (eph &&
+        eph->checkState() != t_eph::bad &&
+        eph->checkState() != t_eph::outdated) {
       _ephs.push_back(eph);
     }
