Index: trunk/BNC/src/rinex/rnxobsfile.cpp
===================================================================
--- trunk/BNC/src/rinex/rnxobsfile.cpp	(revision 6249)
+++ trunk/BNC/src/rinex/rnxobsfile.cpp	(revision 6250)
@@ -317,12 +317,20 @@
     }
     else {
-      for (int iSys = 0; iSys < header.numSys(); iSys++) {
-        char sys = header.system(iSys);
-        for (int iType = 0; iType < header.nTypes(sys); iType++) {
-          QString type = header.obsType(sys, iType, _version);
-          if (_version >= 3.0) {
-            _obsTypes[sys].push_back(type);
+      if (_version >= 3.0) {
+        for (int iSys = 0; iSys < header.numSys(); iSys++) {
+          char sys = header.system(iSys);
+          for (int iType = 0; iType < header.nTypes(sys); iType++) {
+            QString type = header.obsType(sys, iType, _version);
+            if (!_obsTypes[sys].contains(type)) {
+              _obsTypes[sys].push_back(type);
+            }
           }
-          else {
+        }
+      }
+      else {
+        for (int iSys = 0; iSys < header.numSys(); iSys++) {
+          char sys = header.system(iSys);
+          for (int iType = 0; iType < header.nTypes(sys); iType++) {
+            QString type = header.obsType(sys, iType, _version);
             for (int jSys = 0; jSys < _usedSystems.length(); jSys++) {
               char thisSys  = _usedSystems[jSys].toAscii();
@@ -333,5 +341,4 @@
           }
         }
-        _obsTypes[sys].removeDuplicates();
       }
     }
