Index: trunk/BNC/src/PPP/pppSatObs.cpp
===================================================================
--- trunk/BNC/src/PPP/pppSatObs.cpp	(revision 7249)
+++ trunk/BNC/src/PPP/pppSatObs.cpp	(revision 7250)
@@ -125,4 +125,5 @@
   }
   if (totOK) {
+    _signalPropagationTime = prange / t_CST::c - _xcSat[3];
     _model._satClkM = _xcSat[3] * t_CST::c; 
   }
@@ -394,12 +395,12 @@
   // Ionospheric Delay
   // -----------------
-  if (station->vTec()) {
-
+  const t_vTec* vTec = PPP_CLIENT->obsPool()->vTec();
+  if (vTec) {
+    double stec = station->stec(vTec, _signalPropagationTime, rSat);
     for (unsigned iFreq = 1; iFreq < t_frequency::max; iFreq++) {
       t_frequency::type frqType = static_cast<t_frequency::type>(iFreq);
-      //_model._codeIono[iFreq] =
-    }
-  }
-
+      _model._ionoCodeDelay[iFreq] = 40.0 / pow(t_CST::freq(frqType, _channel), 2) * stec * 10.0e16;
+    }
+  }
 
   // Ocean Loading
Index: trunk/BNC/src/PPP/pppSatObs.h
===================================================================
--- trunk/BNC/src/PPP/pppSatObs.h	(revision 7249)
+++ trunk/BNC/src/PPP/pppSatObs.h	(revision 7250)
@@ -89,8 +89,8 @@
       _windUp  = 0.0;
       for (unsigned ii = 0; ii < t_frequency::max; ii++) {
-        _antPCO[ii]    = 0.0;
-        _codeBias[ii]  = 0.0;
-        _phaseBias[ii] = 0.0;
-        _codeIono[ii] = 0.0;
+        _antPCO[ii]        = 0.0;
+        _codeBias[ii]      = 0.0;
+        _phaseBias[ii]     = 0.0;
+        _ionoCodeDelay[ii] = 0.0;
       }
     }
@@ -109,5 +109,5 @@
     double _codeBias[t_frequency::max];
     double _phaseBias[t_frequency::max];
-    double _codeIono[t_frequency::max];
+    double _ionoCodeDelay[t_frequency::max];
   };
 
@@ -126,4 +126,5 @@
   bool                         _outlier;
   std::map<t_lc::type, double> _res;
+  double                       _signalPropagationTime;
 };
 
Index: trunk/BNC/src/PPP/pppStation.cpp
===================================================================
--- trunk/BNC/src/PPP/pppStation.cpp	(revision 7249)
+++ trunk/BNC/src/PPP/pppStation.cpp	(revision 7250)
@@ -25,5 +25,7 @@
 //////////////////////////////////////////////////////////////////////////////
 t_pppStation::t_pppStation() {
-  _windUp    = new t_windUp();
+  _windUp   = new t_windUp();
+  _iono     = new t_iono();
+  _dClk = 0.0;
 }
 
@@ -32,4 +34,5 @@
 t_pppStation::~t_pppStation() {
   delete _windUp;
+  delete _iono;
 }
 
@@ -57,2 +60,8 @@
 }
 
+//
+//////////////////////////////////////////////////////////////////////////////
+double t_pppStation::stec(const t_vTec* vTec, const double signalPropagationTime,
+    const ColumnVector& rSat) const {
+  return _iono->stec(vTec, signalPropagationTime, rSat, _epochTime, _xyzApr);
+}
Index: trunk/BNC/src/PPP/pppStation.h
===================================================================
--- trunk/BNC/src/PPP/pppStation.h	(revision 7249)
+++ trunk/BNC/src/PPP/pppStation.h	(revision 7250)
@@ -10,4 +10,5 @@
 
 class t_windUp;
+class t_iono;
 
 class t_pppStation {
@@ -21,5 +22,5 @@
   void setDClk(double dClk) {_dClk = dClk;}
   void setTideDspl(const ColumnVector& tideDspl) {_tideDspl = tideDspl;}
-  void setVtec(double vtec) {_vtec = vtec;}
+  void setIonoEpochTime(const bncTime& epochTime) {_epochTime = epochTime;}
   const std::string&  name()      const {return _name;}
   const std::string&  antName()   const {return _antName;}
@@ -31,5 +32,5 @@
   double dClk() const {return _dClk;}
   double windUp(const bncTime& time, t_prn prn, const ColumnVector& rSat) const;
-  double vTec() const {return _vtec;}
+  double stec(const t_vTec* vTec, const double signalPropagationTime, const ColumnVector& rSat) const;
 
  private:
@@ -45,5 +46,6 @@
   bncTime           _timeCheck;
   ColumnVector      _xyzCheck;
-  double            _vtec;
+  t_iono*            _iono;
+  bncTime           _epochTime;
 };
 
