Index: trunk/BNC/bncrinex.cpp
===================================================================
--- trunk/BNC/bncrinex.cpp	(revision 76)
+++ trunk/BNC/bncrinex.cpp	(revision 77)
@@ -27,5 +27,6 @@
 ////////////////////////////////////////////////////////////////////////////
 bncRinex::bncRinex(const char* StatID) {
-  _statID = StatID;
+  _statID        = StatID;
+  _headerWritten = false;
 }
 
@@ -33,4 +34,18 @@
 ////////////////////////////////////////////////////////////////////////////
 bncRinex::~bncRinex() {
+  _out.close();
+}
+
+// Write RINEX Header
+////////////////////////////////////////////////////////////////////////////
+void bncRinex::writeHeader() {
+
+  // Open the Output File
+  // --------------------
+  QByteArray fname = _statID + ".RXO";
+  _out.open(fname.data());
+
+
+  _headerWritten = true;
 }
 
@@ -53,4 +68,10 @@
   }
 
+  // Write RINEX Header
+  // ------------------
+  if (!_headerWritten) {
+    writeHeader();
+  }
+
   // Time of Epoch
   // -------------
@@ -59,7 +80,7 @@
   converttime(&cti, firstObs->GPSWeek, firstObs->GPSWeeks);
 
-  cout.setf(std::ios::fixed);
+  _out.setf(std::ios::fixed);
 
-  cout << setw(3)  << cti.year%100
+  _out << setw(3)  << cti.year%100
        << setw(3)  << cti.month
        << setw(3)  << cti.day
@@ -74,24 +95,28 @@
     iSat++;
     Observation* ob = it.next();
-    cout << " " << setw(2) << int(ob->SVPRN);
+    _out << " " << setw(2) << int(ob->SVPRN);
     if (iSat == 12 && it.hasNext()) {
-      cout << endl << "                                ";
+      _out << endl << "                                ";
       iSat = 0;
     }
   }
-  cout << endl;
-
-  cout.precision(3);
+  _out << endl;
 
   it.toFront();
   while (it.hasNext()) {
     Observation* ob = it.next();
-    cout << setw(14) << ob->C1
-         << setw(14) << ob->P2
-         << setw(14) << ob->L1
-         << setw(14) << ob->L2 << endl;
+
+    char lli = ' ';
+    char snr = ' ';
+    _out << setw(14) << setprecision(3) << ob->C1 << lli << snr;
+    _out << setw(14) << setprecision(3) << ob->P2 << lli << snr; 
+    _out << setw(14) << setprecision(3) << ob->L1 << lli << snr; 
+    _out << setw(14) << setprecision(3) << ob->L2 << lli << snr; 
+    _out << endl;
+
     delete ob;
   }
 
+  _out.flush();
   _obs.clear();
 }
Index: trunk/BNC/bncrinex.h
===================================================================
--- trunk/BNC/bncrinex.h	(revision 76)
+++ trunk/BNC/bncrinex.h	(revision 77)
@@ -5,4 +5,6 @@
 #include <QByteArray>
 #include <QList>
+
+#include <fstream>
 
 #include "RTCM/GPSDecoder.h"
@@ -16,6 +18,10 @@
 
  private:
+   void writeHeader();
+
    QByteArray          _statID;
    QList<Observation*> _obs;
+   ofstream            _out;
+   bool                _headerWritten;
 };
 
