Index: /branches/BNC_2.12/src/PPP/pppClient.cpp
===================================================================
--- /branches/BNC_2.12/src/PPP/pppClient.cpp	(revision 7967)
+++ /branches/BNC_2.12/src/PPP/pppClient.cpp	(revision 7968)
@@ -565,2 +565,18 @@
 }
 
+// Constructor
+//////////////////////////////////////////////////////////////////////////////
+void t_pppClient::reset() {
+
+  // to delete all parameters
+  delete _filter;
+  _filter   = new t_pppFilter();
+
+  // to delete old orbit and clock corrections
+  delete _ephPool;
+  _ephPool  = new t_pppEphPool();
+
+  // to delete old code biases
+  delete _obsPool;
+  _obsPool  = new t_pppObsPool();
+}
Index: /branches/BNC_2.12/src/PPP/pppClient.h
===================================================================
--- /branches/BNC_2.12/src/PPP/pppClient.h	(revision 7967)
+++ /branches/BNC_2.12/src/PPP/pppClient.h	(revision 7968)
@@ -45,4 +45,6 @@
   static t_pppClient* instance();
 
+  void reset();
+
  private:
   void initOutput(t_output* output);
Index: /branches/BNC_2.12/src/PPP_SSR_I/pppClient.cpp
===================================================================
--- /branches/BNC_2.12/src/PPP_SSR_I/pppClient.cpp	(revision 7967)
+++ /branches/BNC_2.12/src/PPP_SSR_I/pppClient.cpp	(revision 7968)
@@ -428,2 +428,20 @@
   return failure;
 }
+
+//
+////////////////////////////////////////////////////////////////////////////
+void t_pppClient::reset() {
+
+  // to delete all parameters
+  delete _filter;
+  _filter   = new t_pppFilter(this);
+
+  // to delete old orbit and clock corrections
+  delete _ephUser;
+  _ephUser  = new bncEphUser(false);
+
+  // to delete old code biases
+  delete _pppUtils;
+  _pppUtils = new t_pppUtils();
+
+}
Index: /branches/BNC_2.12/src/PPP_SSR_I/pppClient.h
===================================================================
--- /branches/BNC_2.12/src/PPP_SSR_I/pppClient.h	(revision 7967)
+++ /branches/BNC_2.12/src/PPP_SSR_I/pppClient.h	(revision 7968)
@@ -52,4 +52,5 @@
   std::ostringstream& log() {return *_log;}
   const t_pppOptions* opt() const {return _opt;}
+  void                reset();
 
  private:
Index: /branches/BNC_2.12/src/pppRun.cpp
===================================================================
--- /branches/BNC_2.12/src/pppRun.cpp	(revision 7967)
+++ /branches/BNC_2.12/src/pppRun.cpp	(revision 7968)
@@ -122,4 +122,7 @@
     connect(BNC_CMB, SIGNAL(newClkCorrections(QList<t_clkCorr>)),
             this, SLOT(slotNewClkCorrections(QList<t_clkCorr>)),conType);
+
+    connect(BNC_CORE, SIGNAL(providerIDChanged(QString)),
+            this, SLOT(slotProviderIDChanged(QString)));
   }
   else {
@@ -678,2 +681,22 @@
 }
 
+//
+////////////////////////////////////////////////////////////////////////////
+void t_pppRun::slotProviderIDChanged(QString mountPoint) {
+  QMutexLocker locker(&_mutex);
+
+  if (mountPoint.toStdString() !=_opt->_corrMount) {
+    return;
+  }
+
+  QString msg = "pppRun " + QString(_opt->_roverName.c_str()) + ": Provider Changed: " + mountPoint;
+  emit newMessage(msg.toAscii(), true);
+
+  _pppClient->reset();
+
+  while (!_epoData.empty()) {
+    delete _epoData.front();
+    _epoData.pop_front();
+  }
+
+}
Index: /branches/BNC_2.12/src/pppRun.h
===================================================================
--- /branches/BNC_2.12/src/pppRun.h	(revision 7967)
+++ /branches/BNC_2.12/src/pppRun.h	(revision 7968)
@@ -48,4 +48,5 @@
   void slotSetSpeed(int speed);
   void slotSetStopFlag();
+  void slotProviderIDChanged(QString mountPoint);
 
  private:
