Index: trunk/BNC/bncapp.cpp
===================================================================
--- trunk/BNC/bncapp.cpp	(revision 577)
+++ trunk/BNC/bncapp.cpp	(revision 578)
@@ -169,5 +169,5 @@
   if ( *ee == 0                         || 
        gpseph->GPSweek > (*ee)->GPSweek ||
-       gpseph->TOW     > (*ee)->TOW     ) {
+       (gpseph->GPSweek == (*ee)->GPSweek && gpseph->TOW > (*ee)->TOW) ) {
     delete *ee;
     *ee = gpseph;
@@ -194,26 +194,18 @@
   glonassephemeris** ee = &_glonassEph[glonasseph->almanac_number-1];
 
-  struct converttimeinfo ctiOld;
-  struct converttimeinfo ctiNew;
+  int wwOld, towOld, wwNew, towNew;
   if (*ee != 0) {
-    int ww  = (*ee)->GPSWeek;
-    int tow = (*ee)->GPSTOW; 
-    updatetime(&ww, &tow, (*ee)->tb*1000, 1);
-    converttime(&ctiOld, ww, tow);
-
-    ww  = glonasseph->GPSWeek;
-    tow = glonasseph->GPSTOW; 
-    updatetime(&ww, &tow, glonasseph->tb*1000, 1);
-    converttime(&ctiNew, ww, tow);
-  }
-
-  if ( *ee == 0                       ||
-       ctiOld.second != ctiNew.second ||
-       ctiOld.minute != ctiNew.minute ||
-       ctiOld.hour   != ctiNew.hour   ||
-       ctiOld.day    != ctiNew.day    ||
-       ctiOld.month  != ctiNew.month  ||
-       ctiOld.year   != ctiNew.year   ) {
-
+    wwOld  = (*ee)->GPSWeek;
+    towOld = (*ee)->GPSTOW; 
+    updatetime(&wwOld, &towOld, (*ee)->tb*1000, 1);
+
+    wwNew  = glonasseph->GPSWeek;
+    towNew = glonasseph->GPSTOW; 
+    updatetime(&wwNew, &towNew, glonasseph->tb*1000, 1);
+  }
+
+  if ( *ee == 0      || 
+       wwNew > wwOld ||
+       (wwNew == wwOld && towNew > towOld) ) {
     delete *ee;
     *ee = glonasseph;
