Index: /trunk/BNC/RTCM/RTCM2.cpp
===================================================================
--- /trunk/BNC/RTCM/RTCM2.cpp	(revision 355)
+++ /trunk/BNC/RTCM/RTCM2.cpp	(revision 356)
@@ -880,4 +880,5 @@
     t = 0.6*P.modZCount() 
         + P.getUnsignedBits(4,20)*1.0e-6;
+    t = floor(t*1000.+0.5)/1000.; //weber
     
     // Frequency (exit if neither L1 nor L2)
@@ -969,4 +970,5 @@
     t = 0.6*P.modZCount() 
         + P.getUnsignedBits(4,20)*1.0e-6;
+    t = floor(t*1000.+0.5)/1000.; //weber
     
     // Frequency (exit if neither L1 nor L2)
Index: /trunk/BNC/bncgetthread.cpp
===================================================================
--- /trunk/BNC/bncgetthread.cpp	(revision 355)
+++ /trunk/BNC/bncgetthread.cpp	(revision 356)
@@ -45,4 +45,5 @@
 #include <QTextStream>
 #include <QtNetwork>
+#include <QTime>
 
 #include "bncgetthread.h"
@@ -92,7 +93,5 @@
     _staID = _staID.left(_staID.length()-1) + QString("%1").arg(num).toAscii();
   }    
-// Start Ergaenzung Perlt
   msleep(100); //sleep 0.1 sec
-//Ende Ergaenzung Perlt
 }
 
@@ -154,4 +153,50 @@
             userAndPwd.toBase64() + "\r\n\r\n";
   }
+
+//////////////////////////////////////////////////////////////////
+// Additional NMEA String in request to handle VRS data streams //
+// will be ignored from standard casters                        //
+//////////////////////////////////////////////////////////////////
+
+  double lat, lon;
+  lat = settings.value("approxLat", 0).toDouble();
+  lon = settings.value("approxLon", 0).toDouble();
+  if ((lat != 0.0) && (lon != 0.0)) {
+    const char* flagN="N";
+    const char* flagE="E";
+    if (lon >180.) {lon=(lon-360.)*(-1.); flagE="W";}
+    if ((lon < 0.) && (lon >= -180.))  {lon=lon*(-1.); flagE="W";}
+    if (lon < -180.)  {lon=(lon+360.); flagE="E";}
+    if (lat < 0.)  {lat=lat*(-1.); flagN="S";}
+    QTime ttime(QTime::currentTime());
+    int lat_deg = (int)lat;  
+    double lat_min=(lat-lat_deg)*60.;
+    int lon_deg = (int)lon;  
+    double lon_min=(lon-lon_deg)*60.;
+    int hh = 0 , mm = 0;
+    double ss = 0.0;
+    hh=ttime.hour();
+    mm=ttime.minute();
+    ss=(double)ttime.second()+0.001*ttime.msec();
+    QString gga;
+    gga += "GPGGA,";
+    gga += QString("%1%2%3,").arg((int)hh, 2, 10, QLatin1Char('0')).arg((int)mm, 2, 10, QLatin1Char('0')).arg((int)ss, 2, 10, QLatin1Char('0'));
+    gga += QString("%1%2,").arg((int)lat_deg,2, 10, QLatin1Char('0')).arg(lat_min, 7, 'f', 4, QLatin1Char('0'));
+    gga += flagN;
+    gga += QString(",%1%2,").arg((int)lon_deg,3, 10, QLatin1Char('0')).arg(lon_min, 7, 'f', 4, QLatin1Char('0'));
+    gga += flagE + QString(",1,05,1.00,+00100,M,10.000,M,,");
+    int xori;
+    char XOR = 0;
+    char *Buff =gga.toAscii().data();
+    int iLen = strlen(Buff);
+    for (xori = 0; xori < iLen; xori++) {
+      XOR ^= (char)Buff[xori];
+    }
+    gga += QString("*%1").arg(XOR, 2, 16, QLatin1Char('0'));
+    reqStr += "$";
+    reqStr += gga;
+    reqStr += "\r\n";
+  }
+////////////////////////////////////////////////////////////////
 
   msg += reqStr;
Index: /trunk/BNC/bncmain.cpp
===================================================================
--- /trunk/BNC/bncmain.cpp	(revision 355)
+++ /trunk/BNC/bncmain.cpp	(revision 356)
@@ -126,10 +126,4 @@
 
       getThread->start();
-//Start Ergaenzung Perlt
-//#ifndef WIN32
-//      usleep(100000);  // sleep 0.1 sec
-//#endif
-// verschoben nach bncgetthread.cpp
-//Ende Ergaenzung Perlt
     }
     if (_global_caster->numStations() == 0) {
Index: /trunk/BNC/bncrinex.cpp
===================================================================
--- /trunk/BNC/bncrinex.cpp	(revision 355)
+++ /trunk/BNC/bncrinex.cpp	(revision 356)
@@ -73,5 +73,4 @@
 
   _pgmName  = ((bncApp*)qApp)->bncVersion().leftJustified(20, ' ', true);
-// Start Ergaenzung Perlt
 #ifdef WIN32
   _userName = QString("${USERNAME}");
@@ -79,5 +78,4 @@
   _userName = QString("${USER}");
 #endif
-//Ende Ergaenzung Perlt
   expandEnvVar(_userName);
   _userName = _userName.leftJustified(20, ' ', true);
@@ -295,4 +293,11 @@
                            const QDateTime& datTimNom) {
 
+  QSettings settings;
+//  double lat, lon;
+//  int vrsstream = 0;
+//  lat = settings.value("approxLat", 0).toDouble();
+//  lon = settings.value("approxLon", 0).toDouble();
+//  if ((lat != 0.0) && (lon != 0.0)) {vrsstream=1;}
+
   // Open the Output File
   // --------------------
@@ -302,5 +307,5 @@
   // ----------------------------------
   if ( QFile::exists(_fName) ) {
-    QSettings settings;
+//    QSettings settings;
     if ( Qt::CheckState(settings.value("rnxAppend").toInt()) == Qt::Checked) {
       _out.open(_fName.data(), ios::app);
@@ -337,4 +342,6 @@
                       _mountPoint.path())).leftJustified(60, ' ', true);
         _out << hlp.toAscii().data() << "COMMENT" << endl;
+//        hlp = QString("Approx VRS Position %1%2").arg(lat, -20, 'f', 4).arg(lon, -20, 'f', 4);
+//        _out << hlp.toAscii().data() << "COMMENT" << endl;
       }
       else {
@@ -380,4 +387,6 @@
           _mountPoint.path())).leftJustified(60, ' ', true);
     _out << hlp.toAscii().data() << "COMMENT" << endl;
+//    hlp = QString("Approx VRS Position %1%2").arg(lat, -20, 'f', 4).arg(lon, -20, 'f', 4);
+//    _out << hlp.toAscii().data() << "COMMENT" << endl;
     _out << "                                                            END OF HEADER"        << endl;
   }
Index: /trunk/BNC/bncwindow.cpp
===================================================================
--- /trunk/BNC/bncwindow.cpp	(revision 355)
+++ /trunk/BNC/bncwindow.cpp	(revision 356)
@@ -163,4 +163,8 @@
   _rnxSamplSpinBox->setSuffix(" sec");
   _logFileLineEdit    = new QLineEdit(settings.value("logFile").toString());
+  _LatLineEdit     = new QLineEdit(settings.value("approxLat").toString());
+  _LatLineEdit->setMaximumWidth(9*ww);
+  _LonLineEdit     = new QLineEdit(settings.value("approxLon").toString());
+  _LonLineEdit->setMaximumWidth(9*ww);
   _mountPointsTable   = new QTableWidget(0,4);
   _mountPointsTable->horizontalHeader()->resizeSection(1,25*ww);
@@ -248,4 +252,9 @@
 
   layout->addWidget(new QLabel("Mountpoints"),                   8, 0, 1, 2);
+
+  layout->addWidget(new QLabel(tr("Approx. Lat./Lon.")),         8, 2);
+  layout->addWidget(_LatLineEdit,                                8, 3);
+  layout->addWidget(_LonLineEdit,                                8, 4);
+
   layout->addWidget(_mountPointsTable,                           9, 0, 1, 5);
 
@@ -368,6 +377,8 @@
   settings.setValue("rnxAppend",   _rnxAppendCheckBox->checkState());
   settings.setValue("logFile",     _logFileLineEdit->text());
-
-  QStringList mountPoints;
+  settings.setValue("approxLat",   _LatLineEdit->text());
+  settings.setValue("approxLon",   _LonLineEdit->text());
+  
+QStringList mountPoints;
 
   for (int iRow = 0; iRow < _mountPointsTable->rowCount(); iRow++) {
@@ -434,10 +445,4 @@
 
     getThread->start();
-//Start Ergaenzung Perlt
-//#ifndef WIN32
-//    usleep(100000);  // sleep 0.1 sec
-//#endif
-// verschoben nach bncgetthread.cpp
-// Ende Ergaenzung Perlt
   }
 }
Index: /trunk/BNC/bncwindow.h
===================================================================
--- /trunk/BNC/bncwindow.h	(revision 355)
+++ /trunk/BNC/bncwindow.h	(revision 356)
@@ -85,4 +85,7 @@
     QTableWidget* _mountPointsTable;
 
+    QLineEdit*   _LatLineEdit;
+    QLineEdit*   _LonLineEdit;
+
     QTextEdit*  _log;
 
