Index: /trunk/BNC/src/bnctime.cpp
===================================================================
--- /trunk/BNC/src/bnctime.cpp	(revision 7137)
+++ /trunk/BNC/src/bnctime.cpp	(revision 7138)
@@ -37,4 +37,26 @@
   int  deltad;
   int  dow = 0;
+  while ( gpssec >= 86400 ) {
+    gpssec-=86400;
+    dow++;
+  }
+  while ( gpssec <  0 ) {
+    gpssec+=86400;
+    dow--;
+  }
+  deltad = gpsw*7 + dow;
+  _mjd = 44244 + deltad;
+  _sec = gpssec;
+  return *this;
+}
+
+
+//
+//////////////////////////////////////////////////////////////////////////////
+bncTime& bncTime::setBDS(int gpsw, double gpssec) {
+  int  deltad;
+  int  dow = 0;
+  gpssec += 14.0;
+  gpsw   += 1356.0;
   while ( gpssec >= 86400 ) {
     gpssec-=86400;
Index: /trunk/BNC/src/bnctime.h
===================================================================
--- /trunk/BNC/src/bnctime.h	(revision 7137)
+++ /trunk/BNC/src/bnctime.h	(revision 7138)
@@ -58,4 +58,5 @@
    */
   bncTime &setBDS (int year, int month, int day, int hour, int min, double sec);
+  bncTime &setBDS(int gpsw, double gpssec);
 
   void         reset() {_mjd = 0; _sec = 0;}
Index: /trunk/BNC/src/ephemeris.cpp
===================================================================
--- /trunk/BNC/src/ephemeris.cpp	(revision 7137)
+++ /trunk/BNC/src/ephemeris.cpp	(revision 7138)
@@ -1359,4 +1359,6 @@
   }
 
+  _TOE.setBDS(int(_TOEweek), _TOEsec);
+
   // remark: actually should be computed from second_tot
   //         but it seems to be unreliable in RINEX files
@@ -1444,5 +1446,4 @@
   double yp     = r*sin(u);
   double toesec = (_TOE.gpssec() - 14.0);
-
   double sinom = 0;
   double cosom = 0;
