Index: trunk/BNC/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- trunk/BNC/RTCM3/RTCM3coDecoder.cpp	(revision 3034)
+++ trunk/BNC/RTCM3/RTCM3coDecoder.cpp	(revision 3035)
@@ -85,7 +85,8 @@
 // Reopen Output File
 //////////////////////////////////////////////////////////////////////// 
-void RTCM3coDecoder::reopen() {
-
-  if (!_fileNameSkl.isEmpty()) {
+void RTCM3coDecoder::reopen(const QString& fileNameSkl, QString& fileName,
+                            ofstream*& out) {
+
+  if (!fileNameSkl.isEmpty()) {
 
     bncSettings settings;
@@ -96,22 +97,22 @@
                                       settings.value("corrIntr").toString());
 
-    QString fileName = _fileNameSkl 
+    QString fileNameHlp = fileNameSkl 
       + QString("%1").arg(datTim.date().dayOfYear(), 3, 10, QChar('0'))
       + hlpStr + datTim.toString(".yyC");
 
-    if (_fileName == fileName) {
+    if (fileName == fileNameHlp) {
       return;
     }
     else {
-      _fileName = fileName;
-    }
-
-    delete _out;
+      fileName = fileNameHlp;
+    }
+
+    delete out;
     if ( Qt::CheckState(settings.value("rnxAppend").toInt()) == Qt::Checked) {
-      _out = new ofstream( _fileName.toAscii().data(),
+      out = new ofstream( fileName.toAscii().data(),
                            ios_base::out | ios_base::app );
     }
     else {
-      _out = new ofstream( _fileName.toAscii().data() );
+      out = new ofstream( fileName.toAscii().data() );
     }
   }
@@ -154,5 +155,5 @@
            (_co.NumberOfGPSSat > 0 || _co.NumberOfGLONASSSat > 0) ) {
 
-        reopen();
+        reopen(_fileNameSkl, _fileName, _out);
 
         // Guess GPS week and sec using system time
Index: trunk/BNC/RTCM3/RTCM3coDecoder.h
===================================================================
--- trunk/BNC/RTCM3/RTCM3coDecoder.h	(revision 3034)
+++ trunk/BNC/RTCM3/RTCM3coDecoder.h	(revision 3035)
@@ -47,10 +47,10 @@
   static QStringList corrsToASCIIlines(int GPSweek, double GPSweeks, 
                                        const ClockOrbit& co, const Bias* bias);
-
+  static void reopen(const QString& fileNameSkl, QString& fileName,
+                     std::ofstream*& out);
  signals:
   void newCorrLine(QString line, QString staID, long coTime);
 
  private:
-  void reopen();
   void printLine(const QString& line, long coTime);
 
Index: trunk/BNC/bncsettings.cpp
===================================================================
--- trunk/BNC/bncsettings.cpp	(revision 3034)
+++ trunk/BNC/bncsettings.cpp	(revision 3035)
@@ -107,6 +107,6 @@
     setValue("cmbMountpoint",    "");
     setValue("cmbPassword",      "");
-    setValue("cmbOutFile",       "");
-    setValue("cmbSP3File",       "");
+    setValue("cmbOutPath",       "");
+    setValue("cmbSP3Path",       "");
     sync();
   }
Index: trunk/BNC/bncwindow.cpp
===================================================================
--- trunk/BNC/bncwindow.cpp	(revision 3034)
+++ trunk/BNC/bncwindow.cpp	(revision 3035)
@@ -888,11 +888,11 @@
   cmbLayout->addWidget(_cmbPasswordLineEdit, 1, 8);
 
-  cmbLayout->addWidget(new QLabel("Output File"), 2, 5);
-  _cmbOutFileLineEdit = new QLineEdit(settings.value("cmbOutFile").toString());
-  cmbLayout->addWidget(_cmbOutFileLineEdit, 2, 6);
-
-  cmbLayout->addWidget(new QLabel("Output SP3"), 3, 5);
-  _cmbSP3FileLineEdit = new QLineEdit(settings.value("cmbSP3File").toString());
-  cmbLayout->addWidget(_cmbSP3FileLineEdit, 3, 6);
+  cmbLayout->addWidget(new QLabel("Output Path"), 2, 5);
+  _cmbOutPathLineEdit = new QLineEdit(settings.value("cmbOutPath").toString());
+  cmbLayout->addWidget(_cmbOutPathLineEdit, 2, 6);
+
+  cmbLayout->addWidget(new QLabel("Output SP3 Path"), 3, 5);
+  _cmbSP3PathLineEdit = new QLineEdit(settings.value("cmbSP3Path").toString());
+  cmbLayout->addWidget(_cmbSP3PathLineEdit, 3, 6);
 
   cmbgroup->setLayout(cmbLayout);
@@ -1281,6 +1281,6 @@
   settings.setValue("cmbMountpoint", _cmbMountpointLineEdit->text());
   settings.setValue("cmbPassword",   _cmbPasswordLineEdit->text());
-  settings.setValue("cmbOutFile",    _cmbOutFileLineEdit->text());
-  settings.setValue("cmbSP3File",    _cmbSP3FileLineEdit->text());
+  settings.setValue("cmbOutPath",    _cmbOutPathLineEdit->text());
+  settings.setValue("cmbSP3Path",    _cmbSP3PathLineEdit->text());
 
   if (_caster) {
Index: trunk/BNC/bncwindow.h
===================================================================
--- trunk/BNC/bncwindow.h	(revision 3034)
+++ trunk/BNC/bncwindow.h	(revision 3035)
@@ -195,6 +195,6 @@
     QLineEdit*    _cmbMountpointLineEdit;
     QLineEdit*    _cmbPasswordLineEdit;
-    QLineEdit*    _cmbOutFileLineEdit;
-    QLineEdit*    _cmbSP3FileLineEdit;
+    QLineEdit*    _cmbOutPathLineEdit;
+    QLineEdit*    _cmbSP3PathLineEdit;
 
     bncCaster* _caster;
Index: trunk/BNC/combination/bnccomb.cpp
===================================================================
--- trunk/BNC/combination/bnccomb.cpp	(revision 3034)
+++ trunk/BNC/combination/bnccomb.cpp	(revision 3035)
@@ -158,4 +158,16 @@
     _QQ(iPar,iPar) = pp->sig_0 * pp->sig_0;
   }
+
+  // Output File (skeleton name)
+  // ---------------------------
+  QString path = settings.value("cmbOutPath").toString();
+  if (!path.isEmpty() && !_caster->mountpoint().isEmpty()) {
+    expandEnvVar(path);
+    if ( path.length() > 0 && path[path.length()-1] != QDir::separator() ) {
+      path += QDir::separator();
+    }
+    _outNameSkl = path + _caster->mountpoint();
+  }
+  _out = 0;
 }
 
@@ -169,4 +181,5 @@
   }
   delete _caster;
+  delete _out;
 }
 
@@ -341,8 +354,9 @@
   }
 
-  // Optionall send new Corrections to PPP client
-  // --------------------------------------------
+  // Optionall send new Corrections to PPP client and/or write into file
+  // -------------------------------------------------------------------
+  RTCM3coDecoder::reopen(_outNameSkl, _outName, _out);
   bncApp* app = (bncApp*) qApp;
-  if (app->_bncPPPclient) {
+  if (app->_bncPPPclient || _out) {
     QStringList corrLines;
     co.messageType = COTYPE_GPSCOMBINED;
@@ -350,9 +364,16 @@
                                                   resTime.gpssec(), co, 0));
     while (il.hasNext()) {
-      QString line = il.next() + " " + _caster->mountpoint();
+      QString line = il.next();
+      if (_out) {
+        *_out << line.toAscii().data() << endl;
+        _out->flush(); 
+      }
+      line += " " + _caster->mountpoint();
       corrLines << line;
     }
-
-    app->_bncPPPclient->slotNewCorrections(corrLines);
+    
+    if (app->_bncPPPclient) {
+      app->_bncPPPclient->slotNewCorrections(corrLines);
+    }
   }
 }
Index: trunk/BNC/combination/bnccomb.h
===================================================================
--- trunk/BNC/combination/bnccomb.h	(revision 3034)
+++ trunk/BNC/combination/bnccomb.h	(revision 3035)
@@ -3,4 +3,5 @@
 #define BNCCOMB_H
 
+#include <fstream>
 #include <newmat.h>
 #include "bncephuser.h"
@@ -82,4 +83,7 @@
   QByteArray            _log;
   QString               _masterAC;
+  QString               _outNameSkl;
+  QString               _outName;
+  std::ofstream*        _out;
 };
 
