Index: trunk/BNC/src/pppInclude.h
===================================================================
--- trunk/BNC/src/pppInclude.h	(revision 7922)
+++ trunk/BNC/src/pppInclude.h	(revision 7926)
@@ -27,15 +27,15 @@
 class t_output {
  public:
-  bncTime      _epoTime;           
-  double       _xyzRover[3];  
-  double       _covMatrix[6]; 
-  double       _neu[3];  
+  bncTime      _epoTime;
+  double       _xyzRover[3];
+  double       _covMatrix[6];
+  double       _neu[3];
   double       _trp0;
   double       _trp;
   double       _trpStdev;
-  int          _numSat;       
-  double       _pDop;         
-  std::string  _log;          
-  bool         _error;        
+  int          _numSat;
+  double       _hDop;
+  std::string  _log;
+  bool         _error;
 };
 
@@ -92,5 +92,5 @@
       else if (sys == 'C') return t_frequency::C7;
       else                 return t_frequency::dummy;
-    case lIF: case cIF: case MW: case CL: 
+    case lIF: case cIF: case MW: case CL:
       return t_frequency::dummy;
     case dummy: case maxLc: return t_frequency::dummy;
@@ -119,9 +119,9 @@
   virtual      ~interface_pppClient() {};
   virtual void processEpoch(const std::vector<t_satObs*>& satObs, t_output* output) = 0;
-  virtual void putEphemeris(const t_eph* eph) = 0;                  
-  virtual void putOrbCorrections(const std::vector<t_orbCorr*>& corr) = 0; 
-  virtual void putClkCorrections(const std::vector<t_clkCorr*>& corr) = 0; 
+  virtual void putEphemeris(const t_eph* eph) = 0;
+  virtual void putOrbCorrections(const std::vector<t_orbCorr*>& corr) = 0;
+  virtual void putClkCorrections(const std::vector<t_clkCorr*>& corr) = 0;
   virtual void putCodeBiases(const std::vector<t_satCodeBias*>& satCodeBias) = 0;
-};   
+};
 
 } // namespace BNC_PPP
Index: trunk/BNC/src/pppRun.cpp
===================================================================
--- trunk/BNC/src/pppRun.cpp	(revision 7922)
+++ trunk/BNC/src/pppRun.cpp	(revision 7926)
@@ -224,5 +224,5 @@
   delete _snxtroFile;
   while (!_epoData.empty()) {
-    delete _epoData.front(); 
+    delete _epoData.front();
     _epoData.pop_front();
   }
@@ -599,4 +599,8 @@
   double lamDeg = ell[1] * 180 / M_PI;
 
+  unsigned year, month, day;
+  output._epoTime.civil_date(year, month, day);
+  double gps_utc = gnumleap(year, month, day);
+
   char phiCh = 'N';
   if (phiDeg < 0) {
@@ -616,5 +620,5 @@
     string datestr = output._epoTime.datestr(0); // yyyymmdd
     out << "GPRMC,"
-        << output._epoTime.timestr(0,0) << ",A,"
+        << (output._epoTime - gps_utc).timestr(3,0) << ",A,"
         << setw(2) << setfill('0') << int(phiDeg)
         << setw(6) << setprecision(3) << setfill('0')
@@ -628,5 +632,5 @@
   else if (strType == 'G') {
     out << "GPGGA,"
-        << output._epoTime.timestr(0,0) << ','
+        << (output._epoTime - gps_utc).timestr(2,0) << ','
         << setw(2) << setfill('0') << int(phiDeg)
         << setw(10) << setprecision(7) << setfill('0')
@@ -636,5 +640,5 @@
         << fmod(60*lamDeg,60) << ',' << lamCh
         << ",1," << setw(2) << setfill('0') << output._numSat << ','
-        << setw(3) << setprecision(1) << output._pDop << ','
+        << setw(3) << setprecision(1) << output._hDop << ','
         << setprecision(3) << ell[2] << ",M,0.0,M,,";
   }
