Index: trunk/BNC/src/RTCM/GPSDecoder.cpp
===================================================================
--- trunk/BNC/src/RTCM/GPSDecoder.cpp	(revision 5520)
+++ trunk/BNC/src/RTCM/GPSDecoder.cpp	(revision 5529)
@@ -105,5 +105,5 @@
   }
 
-  int ie = iEntry(rnxStr, rnxVers);
+  int ie = iEntry(rnxStr);
 
   if (ie != -1) {
@@ -116,11 +116,25 @@
 //////////////////////////////////////////////////////////////////////////////
 double t_obs::measdata(const QString& rnxStr, float rnxVers) const {
-  int ie = iEntry(rnxStr, rnxVers);
-  if (ie != -1) {
-    return _measdata[ie];
-  }
-  else {
-    return 0.0;
-  }
+  
+  int maxTrial = 1;
+  if (rnxVers < 3.0 && rnxStr.length() == 2) {
+    maxTrial = 3;
+  }
+    
+  for (int iTrial = 1; iTrial <= maxTrial; iTrial++) {
+    QString rnxStrHlp = rnxStr;
+    if      (iTrial == 2) {
+      rnxStrHlp += 'C'; 
+    }
+    else if (iTrial == 3) {
+      rnxStrHlp += 'P'; 
+    }
+    int ie = iEntry(rnxStrHlp);
+    if (ie != -1 && _measdata[ie] != 0.0) {
+      return _measdata[ie];
+    }
+  }
+  
+  return 0.0;
 }
 
@@ -141,12 +155,5 @@
 // 
 //////////////////////////////////////////////////////////////////////////////
-int t_obs::iEntry(QString rnxStr, float rnxVers) const {
-
-  if (rnxVers < 3.0) {
-    if      (rnxStr == "C1") rnxStr = "C1C";
-    else if (rnxStr == "P1") rnxStr = "C1P";
-    else if (rnxStr == "C2") rnxStr = "C2C";
-    else if (rnxStr == "P2") rnxStr = "C2P";
-  }
+int t_obs::iEntry(QString rnxStr) const {
 
   int res = 0;
Index: trunk/BNC/src/RTCM/GPSDecoder.h
===================================================================
--- trunk/BNC/src/RTCM/GPSDecoder.h	(revision 5520)
+++ trunk/BNC/src/RTCM/GPSDecoder.h	(revision 5529)
@@ -96,5 +96,5 @@
 
  private:
-  int iEntry(QString rnxStr, float rnxVer) const;
+  int iEntry(QString rnxStr) const;
 };
 
