Index: /branches/BNC_2.12/src/bncephuser.cpp
===================================================================
--- /branches/BNC_2.12/src/bncephuser.cpp	(revision 9248)
+++ /branches/BNC_2.12/src/bncephuser.cpp	(revision 9249)
@@ -166,5 +166,5 @@
 
   if (eph->checkState() != t_eph::bad &&
-       eph->checkState() != t_eph::outdated) {
+      eph->checkState() != t_eph::outdated) {
     deque<t_eph*>& qq = _eph[prn];
     qq.push_back(newEph);
@@ -243,5 +243,5 @@
     }
     // maximum update interval: 300 sec
-    else if (eph->type() == t_eph::SBAS    && (dt >     600 || dt <       -300)) {
+    else if (eph->type() == t_eph::SBAS    && (dt >     600 || dt <     -300.0)) {
       eph->setCheckState(t_eph::outdated);
       return;
@@ -253,5 +253,5 @@
     }
     // update interval: up to 24 hours
-    else if (eph->type() == t_eph::IRNSS   && fabs(dt > 24*3600)) {
+    else if (eph->type() == t_eph::IRNSS   && fabs(dt > 24*3600.0)) {
       eph->setCheckState(t_eph::outdated);
       return;
@@ -279,35 +279,35 @@
     // some lines to allow update of ephemeris data sets after an outage
     // update interval: 2h,
-    if      (eph->type() == t_eph::GPS     && dt >  2*3600) {
+    if      (eph->type() == t_eph::GPS     && dt >  2*3600.0) {
       ephL->setCheckState(t_eph::outdated);
       return;
     }
     // update interval: 3h,
-    else if (eph->type() == t_eph::Galileo && dt >  3*3600) {
+    else if (eph->type() == t_eph::Galileo && dt >  3*3600.0) {
       ephL->setCheckState(t_eph::outdated);
       return;
     }
     // updated every 30 minutes
-    else if (eph->type() == t_eph::GLONASS && dt >    1800) {
+    else if (eph->type() == t_eph::GLONASS && dt >    1800.0) {
       ephL->setCheckState(t_eph::outdated);
       return;
     }
     // updated every ?
-    else if (eph->type() == t_eph::QZSS    && dt >  2*3600) {
+    else if (eph->type() == t_eph::QZSS    && dt >  2*3600.0) {
       ephL->setCheckState(t_eph::outdated);
       return;
     }
     // maximum update interval: 300 sec
-    else if  (eph->type() == t_eph::SBAS   && dt >     300) {
+    else if  (eph->type() == t_eph::SBAS   && dt >     300.0) {
       ephL->setCheckState(t_eph::outdated);
       return;
     }
     // updates 1h (GEO) up to 6 hours non-GEO
-    else if  (eph->type() == t_eph::BDS    && dt >  6*3600) {
+    else if  (eph->type() == t_eph::BDS    && dt >  6*3600.0) {
       ephL->setCheckState(t_eph::outdated);
       return;
     }
     // update interval: up to 24 hours
-    else if  (eph->type() == t_eph::IRNSS  && dt > 24*3600) {
+    else if  (eph->type() == t_eph::IRNSS  && dt > 24*3600.0) {
       ephL->setCheckState(t_eph::outdated);
       return;
Index: /branches/BNC_2.12/src/bncutils.cpp
===================================================================
--- /branches/BNC_2.12/src/bncutils.cpp	(revision 9248)
+++ /branches/BNC_2.12/src/bncutils.cpp	(revision 9249)
@@ -255,4 +255,5 @@
   currentGPSWeeks(week, sec);
   bncTime currTime(week, sec);
+
   if (((currTime - obsTime) < 0.0) ||
       (fabs(currTime - obsTime) > maxDt)) {
@@ -261,4 +262,44 @@
   return false;
 }
+
+//
+////////////////////////////////////////////////////////////////////////////
+bool outDatedBcep(const t_eph *eph) {
+  bncTime   toc = eph->TOC();
+  QDateTime now = currentDateAndTimeGPS();
+  bncTime currentTime(now.toString(Qt::ISODate).toStdString());
+  double dt = currentTime - toc;
+
+  // update interval: 2h, data sets are valid for 4 hours
+  if      (eph->type() == t_eph::GPS     && dt > 4*3600.0) {
+    return true;
+  }
+  // update interval: 3h, data sets are valid for 4 hours
+  else if (eph->type() == t_eph::Galileo && dt > 4*3600.0) {
+    return true;
+  }
+  // updated every 30 minutes
+  else if (eph->type() == t_eph::GLONASS && dt > 1*3600.0) {
+    return true;
+  }
+  // orbit parameters are valid for 7200 seconds (minimum)
+  else if (eph->type() == t_eph::QZSS    && dt > 2*3600.0) {
+    return true;
+  }
+  // maximum update interval: 300 sec
+  else if (eph->type() == t_eph::SBAS    && dt >    600.0) {
+    return true;
+  }
+  // updates 1h (GEO) up to 6 hours non-GEO
+  else if (eph->type() == t_eph::BDS     && dt > 6*3600.0) {
+    return true;
+  }
+  // update interval: up to 24 hours
+  else if (eph->type() == t_eph::IRNSS   && dt > 24*3600.0) {
+    return true;
+  }
+  return false;
+}
+
 //
 ////////////////////////////////////////////////////////////////////////////
Index: /branches/BNC_2.12/src/bncutils.h
===================================================================
--- /branches/BNC_2.12/src/bncutils.h	(revision 9248)
+++ /branches/BNC_2.12/src/bncutils.h	(revision 9249)
@@ -65,4 +65,6 @@
 bool         checkForWrongObsEpoch(bncTime obsEpoch);
 
+bool         outDatedBcep(const t_eph *eph);
+
 QByteArray   ggaString(const QByteArray& latitude, const QByteArray& longitude,
                        const QByteArray& height, const QString& ggaType);
@@ -149,5 +151,4 @@
 */
 double       lti2sec(int type, int lti);
-
 
 // CRC24Q checksum calculation function (only full bytes supported).
Index: /branches/BNC_2.12/src/upload/bncrtnetuploadcaster.cpp
===================================================================
--- /branches/BNC_2.12/src/upload/bncrtnetuploadcaster.cpp	(revision 9248)
+++ /branches/BNC_2.12/src/upload/bncrtnetuploadcaster.cpp	(revision 9249)
@@ -22,4 +22,5 @@
 #include "bncsp3.h"
 #include "gnss.h"
+#include "bncutils.h"
 
 using namespace std;
@@ -384,5 +385,5 @@
   for (int ii = 1; ii < lines.size(); ii++) {
     QString key;  // prn or key VTEC, IND (phase bias indicators)
-    double rtnUra = 0.0;    // [m]
+    double rtnUra = 0.0; // [m]
     ColumnVector rtnAPC; rtnAPC.ReSize(3); rtnAPC = 0.0;          // [m, m, m]
     ColumnVector rtnVel; rtnVel.ReSize(3); rtnVel = 0.0;          // [m/s, m/s, m/s]
@@ -467,8 +468,8 @@
     }
 
-    if (eph  &&
-        eph->checkState() != t_eph::bad &&
+    if (eph  &&  !outDatedBcep(eph)           &&  // detected from storage because of no update
+        eph->checkState() != t_eph::bad       &&
         eph->checkState() != t_eph::unhealthy &&
-        eph->checkState() != t_eph::outdated) {
+        eph->checkState() != t_eph::outdated) {  // detected during reception (bncephuser)
       QMap<QString, double> codeBiases;
       QList<phaseBiasSignal> phaseBiasList;
@@ -926,5 +927,5 @@
 
   _outBuffer += hlpBufferCo + hlpBufferBias + hlpBufferPhaseBias
-      + hlpBufferVtec + '\0';;
+      + hlpBufferVtec + '\0';
 }
 
