Index: trunk/BNC/src/bncutils.cpp
===================================================================
--- trunk/BNC/src/bncutils.cpp	(revision 9408)
+++ trunk/BNC/src/bncutils.cpp	(revision 9409)
@@ -272,31 +272,32 @@
 
   // update interval: 2h, data sets are valid for 4 hours
-  if      (eph->type() == t_eph::GPS     && dt > 14400.0) {
+  if      (eph->type() == t_eph::GPS     && (dt > 14400.0 || dt < -7200.0)) {
     return true;
   }
   // update interval: 3h, data sets are valid for 4 hours
-  else if (eph->type() == t_eph::Galileo && dt > 14400.0) {
+  else if (eph->type() == t_eph::Galileo && (dt > 14400.0 || dt <     0.0)) {
     return true;
   }
   // updated every 30 minutes + 5 min
-  else if (eph->type() == t_eph::GLONASS && dt >  3900.0) {
+  else if (eph->type() == t_eph::GLONASS && (dt >  3900.0 || dt < -2100.0)) {
     return true;
   }
   // orbit parameters are valid for 7200 seconds (minimum)
-  else if (eph->type() == t_eph::QZSS    && dt >  7200.0) {
+  else if (eph->type() == t_eph::QZSS    && (dt >  7200.0 || dt < -3600.0)) {
     return true;
   }
   // maximum update interval: 300 sec
-  else if (eph->type() == t_eph::SBAS    && dt >   600.0) {
+  else if (eph->type() == t_eph::SBAS    && (dt >   600.0 || dt <  -600.0)) {
     return true;
   }
   // updates 1h + 5 min
-  else if (eph->type() == t_eph::BDS     && dt >  3900.0) {
+  else if (eph->type() == t_eph::BDS     && (dt >  3900.0 || dt <     0.0) ) {
     return true;
   }
   // update interval: up to 24 hours
-  else if (eph->type() == t_eph::IRNSS   && dt > 86400.0) {
+  else if (eph->type() == t_eph::IRNSS   && (fabs(dt > 86400.0))) {
     return true;
   }
+
   return false;
 }
