Index: /trunk/BNC/src/bncephuser.cpp
===================================================================
--- /trunk/BNC/src/bncephuser.cpp	(revision 9244)
+++ /trunk/BNC/src/bncephuser.cpp	(revision 9245)
@@ -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: /trunk/BNC/src/bncutils.cpp
===================================================================
--- /trunk/BNC/src/bncutils.cpp	(revision 9244)
+++ /trunk/BNC/src/bncutils.cpp	(revision 9245)
@@ -262,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: /trunk/BNC/src/bncutils.h
===================================================================
--- /trunk/BNC/src/bncutils.h	(revision 9244)
+++ /trunk/BNC/src/bncutils.h	(revision 9245)
@@ -75,4 +75,6 @@
 
 bool         checkForWrongObsEpoch(bncTime obsEpoch);
+
+bool         outDatedBcep(const t_eph *eph);
 
 QByteArray   ggaString(const QByteArray& latitude, const QByteArray& longitude,
Index: /trunk/BNC/src/upload/bncrtnetuploadcaster.cpp
===================================================================
--- /trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 9244)
+++ /trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 9245)
@@ -22,4 +22,6 @@
 #include "bncsp3.h"
 #include "gnss.h"
+#include "bncutils.h"
+
 
 using namespace std;
@@ -469,8 +471,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;
