Index: trunk/BNC/rinex/bncpostprocess.cpp
===================================================================
--- trunk/BNC/rinex/bncpostprocess.cpp	(revision 3998)
+++ trunk/BNC/rinex/bncpostprocess.cpp	(revision 3999)
@@ -111,5 +111,5 @@
   else {
     _rnxObsFile = new t_rnxObsFile(_opt->obsFileName, t_rnxObsFile::input);
-    _rnxNavFile = new t_rnxNavFile(_opt->navFileName);
+    _rnxNavFile = new t_rnxNavFile(_opt->navFileName, t_rnxNavFile::input);
     _pppClient  = new bncPPPclient("POST", _opt, false);
 
Index: trunk/BNC/rinex/reqcedit.cpp
===================================================================
--- trunk/BNC/rinex/reqcedit.cpp	(revision 3998)
+++ trunk/BNC/rinex/reqcedit.cpp	(revision 3999)
@@ -43,4 +43,5 @@
 #include "bncapp.h"
 #include "bncsettings.h"
+#include "rnxnavfile.h"
 
 using namespace std;
@@ -54,4 +55,6 @@
   _obsFileNames   = settings.value("reqcObsFile").toString().split(",", QString::SkipEmptyParts);
   _outObsFileName = settings.value("reqcOutObsFile").toString();
+  _navFileNames   = settings.value("reqcNavFile").toString().split(",", QString::SkipEmptyParts);
+  _outNavFileName = settings.value("reqcOutNavFile").toString();
   _rnxVersion     = settings.value("reqcRnxVersion").toDouble();
   _samplingRate   = settings.value("reqcSampling").toInt();
@@ -219,3 +222,9 @@
 void t_reqcEdit::editEphemerides() {
 
-}
+  QStringListIterator it(_navFileNames);
+  while (it.hasNext()) {
+    QString fileName = it.next();
+    t_rnxNavFile rnxNavFile(fileName, t_rnxNavFile::input);
+  }
+
+}
Index: trunk/BNC/rinex/reqcedit.h
===================================================================
--- trunk/BNC/rinex/reqcedit.h	(revision 3998)
+++ trunk/BNC/rinex/reqcedit.h	(revision 3999)
@@ -56,4 +56,6 @@
   QVector<t_rnxObsFile*> _rnxObsFiles;
   QString                _outObsFileName;
+  QStringList            _navFileNames;
+  QString                _outNavFileName;
   double                 _rnxVersion;
   int                    _samplingRate;
Index: trunk/BNC/rinex/rnxnavfile.cpp
===================================================================
--- trunk/BNC/rinex/rnxnavfile.cpp	(revision 3998)
+++ trunk/BNC/rinex/rnxnavfile.cpp	(revision 3999)
@@ -86,14 +86,39 @@
 // Constructor
 ////////////////////////////////////////////////////////////////////////////
-t_rnxNavFile::t_rnxNavFile(QString fileName) {
-  expandEnvVar(fileName);
-  QFile*       file   = new QFile(fileName);
-  file->open(QIODevice::ReadOnly | QIODevice::Text);
-  QTextStream* stream = new QTextStream();
-  stream->setDevice(file);
-  _header.read(stream);
-  this->read(stream);
-  delete stream;
-  delete file;
+t_rnxNavFile::t_rnxNavFile(const QString& fileName, e_inpOut inpOut) {
+  _inpOut = inpOut;
+  _stream = 0;
+  _file   = 0;
+  if (_inpOut == input) {
+    openRead(fileName);
+  }
+  else {
+    openWrite(fileName);
+  }
+}
+
+// Open for input
+////////////////////////////////////////////////////////////////////////////
+void t_rnxNavFile::openRead(const QString& fileName) {
+
+  _fileName = fileName; expandEnvVar(_fileName);
+  _file     = new QFile(_fileName);
+  _file->open(QIODevice::ReadOnly | QIODevice::Text);
+  _stream = new QTextStream();
+  _stream->setDevice(_file);
+
+  _header.read(_stream);
+  this->read(_stream);
+}
+
+// Open for output
+////////////////////////////////////////////////////////////////////////////
+void t_rnxNavFile::openWrite(const QString& fileName) {
+
+  _fileName = fileName; expandEnvVar(_fileName);
+  _file     = new QFile(_fileName);
+  _file->open(QIODevice::WriteOnly | QIODevice::Text);
+  _stream = new QTextStream();
+  _stream->setDevice(_file);
 }
 
@@ -101,7 +126,15 @@
 ////////////////////////////////////////////////////////////////////////////
 t_rnxNavFile::~t_rnxNavFile() {
+  close();
   for (unsigned ii = 0; ii < _ephs.size(); ii++) {
     delete _ephs[ii];
-  }
+  }  
+}
+
+// Close
+////////////////////////////////////////////////////////////////////////////
+void t_rnxNavFile::close() {
+  delete _stream; _stream = 0;
+  delete _file;   _file = 0;
 }
 
Index: trunk/BNC/rinex/rnxnavfile.h
===================================================================
--- trunk/BNC/rinex/rnxnavfile.h	(revision 3998)
+++ trunk/BNC/rinex/rnxnavfile.h	(revision 3999)
@@ -37,4 +37,8 @@
 class t_rnxNavFile {
 
+ public:
+  enum e_inpOut {input, output};
+
+ private:
   class t_rnxNavHeader {
    public:
@@ -50,5 +54,5 @@
  
  public:
-  t_rnxNavFile(QString fileName);
+  t_rnxNavFile(const QString& fileName, e_inpOut inpOut);
   ~t_rnxNavFile();
   t_eph* getNextEph(const bncTime& tt, const QMap<QString, int>* corrIODs);
@@ -56,7 +60,17 @@
   bool  glonass() const {return _header.glonass();}
 
+ protected:
+  t_rnxNavFile() {};
+  void openRead(const QString& fileName);
+  void openWrite(const QString& fileName);
+  void close();
+
  private:
   void read(QTextStream* stream);
 
+  e_inpOut            _inpOut;
+  QFile*              _file;
+  QString             _fileName;
+  QTextStream*        _stream;
   std::vector<t_eph*> _ephs;
   t_rnxNavHeader      _header;
