Index: trunk/BNC/src/bnccaster.cpp
===================================================================
--- trunk/BNC/src/bnccaster.cpp	(revision 10498)
+++ trunk/BNC/src/bnccaster.cpp	(revision 10503)
@@ -312,5 +312,4 @@
            QString("Decoding %1 stream(s)").arg(_staIDs.size()).toLatin1(), true) );
   if (_staIDs.size() == 0) {
-    emit(newMessage("bncCaster: Last get thread terminated", true));
     emit getThreadsFinished();
   }
Index: trunk/BNC/src/bncgetthread.cpp
===================================================================
--- trunk/BNC/src/bncgetthread.cpp	(revision 10498)
+++ trunk/BNC/src/bncgetthread.cpp	(revision 10503)
@@ -334,8 +334,13 @@
     connect((RTCM3Decoder*) newDecoder, SIGNAL(newMessage(QByteArray,bool)),
         this, SIGNAL(newMessage(QByteArray,bool)));
-  } else if (_format.indexOf("ZERO") != -1) {
-    emit(newMessage(_staID + ": Get data in original format", true));
-    _decoder = new bncZeroDecoder(_staID);
-  } else if (_format.indexOf("RTNET") != -1) {
+  } else if (_format == "ZERO") {
+    emit(newMessage(_staID + ": Forward data in original format", true));
+    _decoder = new bncZeroDecoder(_staID, false);
+  }
+  else if (_format == "ZERO2FILE") {
+    emit(newMessage(_staID + ": Get data in original format and store it", true));
+    _decoder = new bncZeroDecoder(_staID, true);
+  }
+  else if (_format.indexOf("RTNET") != -1) {
     emit(newMessage(_staID + ": Get data in RTNet format", true));
     _decoder = new bncRtnetDecoder();
Index: trunk/BNC/src/bnchelp.html
===================================================================
--- trunk/BNC/src/bnchelp.html	(revision 10498)
+++ trunk/BNC/src/bnchelp.html	(revision 10503)
@@ -1455,5 +1455,5 @@
 The screenshot below shows an example setup of BNC when converting streams to RINEX. Streams are coming from Ntrip Broadcaster
 <a href="http://igs-ip.net:2101" target="_blank">http://igs-ip.net:2101</a>.
-Specifying a decoder string 'ZERO' would mean to not convert the affected stream but save its content as received.
+Specifying a decoder string 'ZERO2FILE' would mean to not convert the affected stream but save its content as received.
 On Wed Oct  5 2022 that would result for the Mountpoint 'FFMJ00DEU0' into a file named 'FFMJ00DEU0_221005'.
 </p>
@@ -3410,4 +3410,7 @@
 BNC can output streams related to the above specified 'Mountpoint' through a TCP/IP port of your local host.
 Enter a port number to activate this function. The stream content remains untouched. BNC does not decode or reformat the data for this output.
+If the decoder string is not an accepted one ('RTCM_2.x', 'RTCM_3.x' and 'RTNET'), please change the decoder string to <ul>
+<li> 'ZERO' (forward the raw data) or </li>
+<li> 'ZERO2File' (forward and store the raw data)</li> </ul> in addition.
 </p>
 
@@ -5318,7 +5321,10 @@
       enter your preferred decoder and then hit Enter. Accepted decoder strings are 'RTCM_2.x', 'RTCM_3.x' and 'RTNET'.</li>
   <li>In case you need to log the raw data as it is, BNC allows users to by-pass its decoders and directly save the input in daily logfiles.
-      To do this, specify the decoder string as 'ZERO'. The generated filenames are created from the characters of the streams mountpoints plus
-      two-digit numbers each for year, month, and day. Example: Setting the 'decoder' string for mountpoint WTZZ00DEU0 to 'ZERO' and
+      To do this, specify the decoder string as 'ZERO2FILE'. The generated filenames are created from the characters of the streams mountpoints plus
+      two-digit numbers each for year, month, and day. Example: Setting the 'decoder' string for mountpoint WTZZ00DEU0 to 'ZERO2FILE' and
       running BNC on December 01, 2022 would save raw data in a file named WTZZ00DEU0_221201.</li>
+ <li> BNC allows as well to forward streams related to the specified 'Mountpoint' on top of the 'Miscellaneous Panel'
+      through a TCP/IP port of your local host. In this case, the stream content remains untouched; BNC does not decode or reformat the data for this output.
+      If the decoder string is not an accepted one, please change the decoder string to 'ZERO' (forward the raw data only) or 'ZERO2FILE' (forward and store the raw data) in addition.</li>
   <li>BNC can also retrieve streams from virtual reference stations (VRS). To initiate these streams, an approximate rover position needs to be sent
       in NMEA format to the Ntrip Broadcaster. In return, a user-specific data stream is generated, typically by Network RTK software.
@@ -5518,5 +5524,5 @@
   <li>Enter the IP port number of the stream providing host.</li>
   <li>Specify a mountpoint. Recommended is a 9-character station ID. Example: FFMJ00DEU</li>
-  <li>Specify the stream format. Available options are 'RTCM_2', 'RTCM_3', 'RTNET', and 'ZERO'.</li>
+  <li>Specify the stream format. Available options are 'RTCM_2', 'RTCM_3', 'RTNET', 'ZERO' and 'ZERO2FILE'.</li>
   <li>Enter the approximate latitude of the stream providing rover in degrees. Example: 50.09.</li>
   <li>Enter the approximate longitude of the stream providing rover in degrees. Example: 8.66.</li>
@@ -5536,5 +5542,5 @@
   <li>Enter the local port number where the UDP stream arrives.</li>
   <li>Specify a mountpoint. Recommended is a 9-character station ID. Example: FFMJ00DEU</li>
-  <li>Specify the stream format. Available options are 'RTCM_2', 'RTCM_3', 'RTNET', and 'ZERO'.</li>
+  <li>Specify the stream format. Available options are 'RTCM_2', 'RTCM_3', 'RTNET', 'ZERO' and 'ZERO2FILE'.</li>
   <li>Enter the approximate latitude of the stream providing rover in degrees. Example: 50.09.</li>
   <li>Enter the approximate longitude of the stream providing rover in degrees. Example: 8.66.</li>
@@ -5550,5 +5556,5 @@
 <ul>
   <li>Specify a mountpoint. Recommended is a 9-character station ID. Example: FFMJ00DEU</li>
-  <li>Specify the stream format. Available options are 'RTCM_2', 'RTCM_3', 'RTNET', and 'ZERO'.</li>
+  <li>Specify the stream format. Available options are 'RTCM_2', 'RTCM_3', 'RTNET', 'ZERO' and 'ZERO2FILE'.</li>
   <li>Enter the approximate latitude of the stream providing rover in degrees. Example: 50.09.</li>
   <li>Enter the approximate longitude of the stream providing rover in degrees. Example: 8.66.</li>
Index: trunk/BNC/src/bncipport.cpp
===================================================================
--- trunk/BNC/src/bncipport.cpp	(revision 10498)
+++ trunk/BNC/src/bncipport.cpp	(revision 10503)
@@ -83,5 +83,5 @@
   _ipPortLineEdit->setWhatsThis(tr("<p>Enter the IP port number of the stream providing host.</p>"));
   _ipMountLineEdit->setWhatsThis(tr("<p>Specify a mountpoint.</p><p>Recommended is a 9-character station ID.<br>Example: FFMJ01DEU</p>"));
-  _ipFormatLineEdit->setWhatsThis(tr("<p>Specify the stream format.</p><p>Available options are 'RTCM_2', 'RTCM_3', RTNET, and 'ZERO'.</p>"));
+  _ipFormatLineEdit->setWhatsThis(tr("<p>Specify the stream format.</p><p>Available options are 'RTCM_2', 'RTCM_3', RTNET, 'ZERO' and 'ZERO2FILE'.</p>"));
   _ipLatLineEdit->setWhatsThis(tr("<p>Enter the approximate latitude of the stream providing receiver in degrees.<p></p>Example: 45.32</p>"));
   _ipLonLineEdit->setWhatsThis(tr("<p>Enter the approximate longitude of the stream providing receiver in degrees.<p></p>Example: -15.20</p>"));
Index: trunk/BNC/src/bncserialport.cpp
===================================================================
--- trunk/BNC/src/bncserialport.cpp	(revision 10498)
+++ trunk/BNC/src/bncserialport.cpp	(revision 10503)
@@ -100,5 +100,5 @@
   // --------------------------------------
   _serialMountpointLineEdit->setWhatsThis(tr("<p>BNC allows to retrieve streams via serial port without using the Ntrip transport protocol.</p><p>Specify a mountpoint. Recommended is a 9-character station ID.<br>Example: FFMJ01DEU</p>"));
-  _serialFormatLineEdit->setWhatsThis(tr("<p>Specify the stream format.</p><p>Available options are 'RTCM_2', 'RTCM_3', 'RTNET', and 'ZERO'.</p>"));
+  _serialFormatLineEdit->setWhatsThis(tr("<p>Specify the stream format.</p><p>Available options are 'RTCM_2', 'RTCM_3', 'RTNET', 'ZERO' and 'ZERO2FILE'.</p>"));
   _serialLatLineEdit->setWhatsThis(tr("<p>Enter the approximate latitude of the stream providing receiver in degrees.<p></p>Example: 45.32</p>"));
   _serialLonLineEdit->setWhatsThis(tr("<p>Enter the approximate latitude of the stream providing receiver in degrees.<p></p>Example: 45.32</p>"));
Index: trunk/BNC/src/bncudpport.cpp
===================================================================
--- trunk/BNC/src/bncudpport.cpp	(revision 10498)
+++ trunk/BNC/src/bncudpport.cpp	(revision 10503)
@@ -81,5 +81,5 @@
   _ipPortLineEdit->setWhatsThis(tr("<p>BNC allows to pick up streams arriving directly at one of the local host's UDP ports without using the Ntrip transport protocol.</p><p>Enter the local port number where the UDP stream arrives.</p>"));
   _ipMountLineEdit->setWhatsThis(tr("<p>Specify a mountpoint.</p><p>Recommended is a 9-character station ID.<br>Example: FFMJ01DEU</p>"));
-  _ipFormatLineEdit->setWhatsThis(tr("<p>Specify the stream format.</p><p>Available options are 'RTCM_2', 'RTCM_3', 'RTNET', and 'ZERO'.</p>"));
+  _ipFormatLineEdit->setWhatsThis(tr("<p>Specify the stream format.</p><p>Available options are 'RTCM_2', 'RTCM_3', 'RTNET', 'ZERO' and 'ZERO2FILE'.</p>"));
   _ipLatLineEdit->setWhatsThis(tr("<p>Enter the approximate latitude of the stream providing receiver in degrees.<p></p>Example: 45.32</p>"));
   _ipLonLineEdit->setWhatsThis(tr("<p>Enter the approximate longitude of the stream providing receiver in degrees.<p></p>Example: -15.20</p>"));
Index: trunk/BNC/src/bncwindow.cpp
===================================================================
--- trunk/BNC/src/bncwindow.cpp	(revision 10498)
+++ trunk/BNC/src/bncwindow.cpp	(revision 10503)
@@ -1500,5 +1500,7 @@
   _miscIntrComboBox->setWhatsThis(tr("<p>BNC can average latencies per stream over a certain period of GPS time. The resulting mean latencies are recorded in the 'Log' tab at the end of each 'Log latency' interval together with results of a statistical evaluation (approximate number of covered epochs, data gaps).</p><p>Select a 'Log latency' interval or select the empty option field if you do not want BNC to log latencies and statistical information. <i>[key: miscIntr]</i></p>"));
   _miscScanRTCMCheckBox->setWhatsThis(tr("<p>Tick 'Scan RTCM' to log the numbers of incoming message types as well as contained antenna coordinates, antenna height, and antenna descriptor.</p><p>In case of RTCM Version 3 MSM streams, BNC will also log contained RINEX Version 3 observation types. <i>[key: miscScanRTCM]</i></p>"));
-  _miscPortLineEdit->setWhatsThis(tr("<p>BNC can output an incoming stream through an IP port of your local host.</p><p>Specify a port number to activate this function. <i>[key: miscPort]</i></p>"));
+  _miscPortLineEdit->setWhatsThis(tr("<p>BNC can output an incoming stream through an IP port of your local host.</p><p>Specify a port number to activate this function. In this case, the stream content remains untouched; BNC does not decode or reformat the data for this output.</p><p> If the decoder string is not an accepted one ('RTCM_2.x', 'RTCM_3.x' and 'RTNET'), please change the decoder string to <ul>"
+      "<li> 'ZERO' (forward the raw data) or </li>"
+      "<li> 'ZERO2File' (forward and store the raw data)</li> </ul> in addition. <i>[key: miscPort]</i></p>"));
 
   // WhatsThis, PPP (1)
@@ -1642,5 +1644,22 @@
   // WhatsThis, Streams Canvas
   // -------------------------
-  _mountPointsTable->setWhatsThis(tr("<p>Streams selected for retrieval are listed in the 'Streams' section. Clicking on 'Add Stream' button opens a window that allows the user to select data streams from an Ntrip Broadcaster according to their mountpoints. To remove a stream from the 'Streams' list, highlight it by clicking on it and hit the 'Delete Stream' button. You can also remove multiple streams by highlighting them using +Shift and +Ctrl.</p><p>BNC automatically allocates one of its internal decoders to a stream based on the stream's 'format' as given in the source-table. BNC allows users to change this selection by editing the decoder string. Double click on the 'decoder' field, enter your preferred decoder and then hit Enter. Accepted decoder strings are 'RTCM_2.x', 'RTCM_3.x' and 'RTNET'.</p><p>In case you need to log raw data as is, BNC allows to by-pass its decoders and directly save the input in daily log files. To do this specify the decoder string as 'ZERO'.</p><p>BNC can also retrieve streams from virtual reference stations (VRS). VRS streams are indicated by a 'yes' in the 'nmea' column. To initiate such stream, the approximate latitude/longitude rover position is sent to the Ntrip Broadcaster together with an approximation for the height. Default values for latitude and longitude can be change according to your requirement. Double click on 'lat' and 'long' fields, enter the values you wish to send and then hit Enter. <i>[key: mountPoints]</i></p>"));
+  _mountPointsTable->setWhatsThis(tr("<p>Streams selected for retrieval are listed in the 'Streams' section. "
+      "Clicking on 'Add Stream' button opens a window that allows the user to select data streams from an Ntrip Broadcaster "
+      "according to their mountpoints. To remove a stream from the 'Streams' list, highlight it by clicking on it "
+      "and hit the 'Delete Stream' button. You can also remove multiple streams by highlighting them using +Shift and +Ctrl.</p><p>"
+      "BNC automatically allocates one of its internal decoders to a stream based on the stream's 'format' as given in the source-table. "
+      "BNC allows users to change this selection by editing the decoder string. "
+      "Double click on the 'decoder' field, enter your preferred decoder and then hit Enter. "
+      "Accepted decoder strings are 'RTCM_2.x', 'RTCM_3.x' and 'RTNET'.</p><p>"
+      "In case you need to log raw data as is, BNC allows to by-pass its decoders and directly save the input in daily log files. "
+      "To do this, specify the decoder string as 'ZERO2FILE'.</p><p>"
+      "BNC allows as well to forward streams related to the specified 'Mountpoint' on top of the 'Miscellaneous Panel' "
+      "through a TCP/IP port of your local host. "
+      "In this case, the stream content remains untouched; BNC does not decode or reformat the data for this output. "
+      "If the decoder string is not an accepted one, please change the decoder string to 'ZERO' (forward the raw data only) or 'ZERO2FILE' (forward and store the raw data) in addition.</p><p>"
+      "BNC can also retrieve streams from virtual reference stations (VRS). VRS streams are indicated by a 'yes' in the 'nmea' column. "
+      "To initiate such stream, the approximate latitude/longitude rover position is sent to the Ntrip Broadcaster "
+      "together with an approximation for the height. Default values for latitude and longitude can be change according to your requirement. "
+      "Double click on 'lat' and 'long' fields, enter the values you wish to send and then hit Enter. <i>[key: mountPoints]</i></p>"));
   _actAddMountPoints->setWhatsThis(tr("<p>Add stream(s) to selection presented in the 'Streams' canvas.</p>"));
   _actDeleteMountPoints->setWhatsThis(tr("<p>Delete stream(s) from selection presented in the 'Streams' canvas.</p>"));
Index: trunk/BNC/src/bnczerodecoder.cpp
===================================================================
--- trunk/BNC/src/bnczerodecoder.cpp	(revision 10498)
+++ trunk/BNC/src/bnczerodecoder.cpp	(revision 10503)
@@ -35,5 +35,5 @@
  * Created:    24-Apr-2007
  *
- * Changes:    
+ * Changes:
  *
  * -----------------------------------------------------------------------*/
@@ -47,16 +47,19 @@
 
 // Constructor
-//////////////////////////////////////////////////////////////////////// 
-bncZeroDecoder::bncZeroDecoder(const QString& fileName) {
+////////////////////////////////////////////////////////////////////////
+bncZeroDecoder::bncZeroDecoder(const QString& fileName, bool writeFile) {
+  _writeFile = writeFile;
 
-  bncSettings settings;
-  QString path = settings.value("rnxPath").toString();
-  expandEnvVar(path);
+  if (_writeFile) {
+    bncSettings settings;
+    QString path = settings.value("rnxPath").toString();
+    expandEnvVar(path);
 
-  if ( path.length() > 0 && path[path.length()-1] != QDir::separator() ) {
-    path += QDir::separator();
+    if ( path.length() > 0 && path[path.length()-1] != QDir::separator() ) {
+      path += QDir::separator();
+    }
+
+    _fileName = path + fileName;
   }
-
-  _fileName = path + fileName;
 
   _out = 0;
@@ -64,5 +67,5 @@
 
 // Destructor
-//////////////////////////////////////////////////////////////////////// 
+////////////////////////////////////////////////////////////////////////
 bncZeroDecoder::~bncZeroDecoder() {
   delete _out;
@@ -70,10 +73,10 @@
 
 // Reopen Output File
-//////////////////////////////////////////////////////////////////////// 
+////////////////////////////////////////////////////////////////////////
 void bncZeroDecoder::reopen() {
   QDate currDate = currentDateAndTimeGPS().date();
   if (!_out || _fileDate != currDate) {
     delete _out;
-    QByteArray fileName = 
+    QByteArray fileName =
            (_fileName + "_" + currDate.toString("yyMMdd")).toLatin1();
     bncSettings settings;
@@ -89,10 +92,12 @@
 
 // Decode Method
-//////////////////////////////////////////////////////////////////////// 
+////////////////////////////////////////////////////////////////////////
 t_irc bncZeroDecoder::Decode(char* buffer, int bufLen, vector<string>& errmsg) {
   errmsg.clear();
-  reopen();
-  _out->write(buffer, bufLen);
-  _out->flush();
+  if (_writeFile) {
+    reopen();
+    _out->write(buffer, bufLen);
+    _out->flush();
+  }
   return success;
 }
Index: trunk/BNC/src/bnczerodecoder.h
===================================================================
--- trunk/BNC/src/bnczerodecoder.h	(revision 10498)
+++ trunk/BNC/src/bnczerodecoder.h	(revision 10503)
@@ -32,5 +32,5 @@
 class bncZeroDecoder: public GPSDecoder {
  public:
-  bncZeroDecoder(const QString& fileName);
+  bncZeroDecoder(const QString& fileName, bool writeFile);
   ~bncZeroDecoder();
   virtual t_irc Decode(char* buffer, int bufLen, std::vector<std::string>& errmsg);
@@ -40,4 +40,5 @@
   std::ofstream* _out;
   QDate          _fileDate;
+  bool           _writeFile;
 };
 
