Index: trunk/BNC/src/PPP/pppRunRealTime.cpp
===================================================================
--- trunk/BNC/src/PPP/pppRunRealTime.cpp	(revision 5872)
+++ trunk/BNC/src/PPP/pppRunRealTime.cpp	(revision 5873)
@@ -74,4 +74,7 @@
     connect(BNC_CORE, SIGNAL(newCorrections(QStringList)),
             this, SLOT(slotNewCorrections(QStringList)));
+
+    connect(this, SIGNAL(newPosition(bncTime, double, double, double)),
+            BNC_CORE, SLOT(slotNewPosition(bncTime, double, double, double)));
 
     for (unsigned iPrn = 0; iPrn <= t_prn::MAXPRN; iPrn++) {
@@ -200,4 +203,12 @@
     _pppClient->processEpoch(satObs, &output);
 
+    if (!output._error && _opt->xyzAprRoverSet()) {
+      ColumnVector dx(3);
+      dx[0] = _opt->_xyzAprRover[0] - output._xyzRover[0];
+      dx[1] = _opt->_xyzAprRover[1] - output._xyzRover[1];
+      dx[2] = _opt->_xyzAprRover[2] - output._xyzRover[2];
+      emit newPosition (output._epoTime, dx[0], dx[1], dx[2]);
+    }
+
     delete _epoData.front(); _epoData.pop_front();
     
Index: trunk/BNC/src/bnccore.cpp
===================================================================
--- trunk/BNC/src/bnccore.cpp	(revision 5872)
+++ trunk/BNC/src/bnccore.cpp	(revision 5873)
@@ -627,4 +627,10 @@
 // 
 ////////////////////////////////////////////////////////////////////////////
+void t_bncCore::slotNewPosition(bncTime time, double x, double y, double z) {
+  emit newPosition(time, x, y, z);
+}
+
+// 
+////////////////////////////////////////////////////////////////////////////
 void t_bncCore::slotQuit() {
   cout << "t_bncCore::slotQuit" << endl;
Index: trunk/BNC/src/bnccore.h
===================================================================
--- trunk/BNC/src/bnccore.h	(revision 5872)
+++ trunk/BNC/src/bnccore.h	(revision 5873)
@@ -76,4 +76,5 @@
   void slotNewGalileoEph(galileoephemeris* galileoeph);
   void slotNewCorrLine(QString line, QString staID, bncTime coTime);
+  void slotNewPosition(bncTime time, double x, double y, double z);
   void slotQuit();
 
@@ -85,4 +86,5 @@
   void newCorrections(QStringList);
   void providerIDChanged(QString);
+  void newPosition(bncTime time, double x, double y, double z);
     
  private slots:
Index: trunk/BNC/src/bncgetthread.h
===================================================================
--- trunk/BNC/src/bncgetthread.h	(revision 5872)
+++ trunk/BNC/src/bncgetthread.h	(revision 5873)
@@ -84,6 +84,4 @@
    void newRTCMMessage(QByteArray staID, int msgID);
    void getThreadFinished(QByteArray staID);
-   void newPosition(bncTime time, double x, double y, double z);
-   void newNMEAstr(QByteArray str);
 
  public:
Index: trunk/BNC/src/bncwindow.cpp
===================================================================
--- trunk/BNC/src/bncwindow.cpp	(revision 5872)
+++ trunk/BNC/src/bncwindow.cpp	(revision 5873)
@@ -91,7 +91,9 @@
   _casterEph = 0;
 
-  _bncFigure = new bncFigure(this);
+  _bncFigure     = new bncFigure(this);
   _bncFigureLate = new bncFigureLate(this);
-  _bncFigurePPP = new bncFigurePPP(this);
+  _bncFigurePPP  = new bncFigurePPP(this);
+  connect(BNC_CORE, SIGNAL(newPosition(bncTime, double, double, double)),
+          _bncFigurePPP, SLOT(slotNewPosition(bncTime, double, double, double)));
   _runningRealTime           = false;
   _runningPostProcessingReqc = false;
@@ -1900,21 +1902,4 @@
         connect(thread, SIGNAL(newLatency(QByteArray, double)),
                 _bncFigureLate, SLOT(slotNewLatency(QByteArray, double)));
-        if ( Qt::CheckState(settings.value("pppPlotCoordinates").toInt()) == Qt::Checked) {
-          disconnect(thread, 
-                     SIGNAL(newPosition(bncTime, double, double, double)),
-                     _bncFigurePPP, 
-                     SLOT(slotNewPosition(bncTime, double, double, double)));
-          connect(thread, SIGNAL(newPosition(bncTime, double, double, double)),
-                  _bncFigurePPP, 
-                  SLOT(slotNewPosition(bncTime, double, double, double)));
-        }
-#ifdef QT_WEBKIT
-        if (_mapWin) {
-          disconnect(thread, SIGNAL(newPosition(bncTime, double, double, double)),
-                     _mapWin, SLOT(slotNewPosition(bncTime, double, double, double)));
-          connect(thread, SIGNAL(newPosition(bncTime, double, double, double)),
-                  _mapWin, SLOT(slotNewPosition(bncTime, double, double, double)));
-        }
-#endif
         break;
       }
@@ -2497,10 +2482,6 @@
     _mapWin = new bncMapWin(this);
     connect(_mapWin, SIGNAL(mapClosed()), this, SLOT(slotMapPPPClosed()));
-    QListIterator<bncGetThread*> it(_threads);
-    while (it.hasNext()) {
-      bncGetThread* thread = it.next();
-      connect(thread, SIGNAL(newPosition(bncTime, double, double, double)),
-              _mapWin, SLOT(slotNewPosition(bncTime, double, double, double)));
-    }
+    connect(BNC_CORE, SIGNAL(newPosition(bncTime, double, double, double)),
+            _mapWin, SLOT(slotNewPosition(bncTime, double, double, double)));
   }
   _mapWin->show();
