Index: /trunk/BNC/rinex/reqcedit.cpp
===================================================================
--- /trunk/BNC/rinex/reqcedit.cpp	(revision 4053)
+++ /trunk/BNC/rinex/reqcedit.cpp	(revision 4054)
@@ -133,4 +133,7 @@
       editRnxObsHeader(outObsFile);
       outObsFile.writeHeader();
+    }
+    else {
+      outObsFile.checkNewHeader(obsFile->header());
     }
     t_rnxObsFile::t_rnxEpo* epo = 0;
Index: /trunk/BNC/rinex/rnxobsfile.cpp
===================================================================
--- /trunk/BNC/rinex/rnxobsfile.cpp	(revision 4053)
+++ /trunk/BNC/rinex/rnxobsfile.cpp	(revision 4054)
@@ -1011,7 +1011,27 @@
   setHeader(header, oldHeader._version);
 
-  if (header._obsTypesV2 != oldHeader._obsTypesV2 ||
-      header._obsTypesV3 != oldHeader._obsTypesV3) {
-
+  // Check Observation Types
+  // -----------------------
+  bool same = true;
+  if (_header._version < 3.0) {
+    if (_header._obsTypesV2 != oldHeader._obsTypesV2) {
+      same = false;
+    }
+  }
+  else {
+    QMapIterator<char, QVector<QString> > it(_header._obsTypesV3);
+    while (it.hasNext()) {
+      it.next();
+      char                    sys     = it.key();
+      const QVector<QString>& typesV3 = it.value();
+      if (!oldHeader._obsTypesV3.contains(sys) ||
+          oldHeader._obsTypesV3[sys] != typesV3) {
+        same = false;
+        break;
+      }
+    }
+  }
+
+  if (!same) {
     writeHeader();
   }
