Index: trunk/rtcm3torinex/lib/rtcm3torinex.c
===================================================================
--- trunk/rtcm3torinex/lib/rtcm3torinex.c	(revision 4372)
+++ trunk/rtcm3torinex/lib/rtcm3torinex.c	(revision 4374)
@@ -1445,5 +1445,8 @@
                   gnss->satellites[gnss->numsats++] = fullsat;
 
-                gnss->codetype[num] = cd.code;
+                gnss->codetype[num][cd.typeR] = 
+                gnss->codetype[num][cd.typeP] = 
+                gnss->codetype[num][cd.typeD] = 
+                gnss->codetype[num][cd.typeS] = cd.code;
                 if(!handle->info[sys].type[cd.typeR])
                 {
@@ -1949,4 +1952,6 @@
     buffer += i; buffersize -= i;
 
+    tbufferpos = 0;
+
     CHECKFLAGSNEW(GPS, C1,  C1C)
     CHECKFLAGSNEW(GPS, L1C, L1C)
@@ -2555,5 +2560,9 @@
                 if((Parser->Data.dataflags[i] & df)
                 && !isnan(Parser->Data.measdata[i][pos])
-                && !isinf(Parser->Data.measdata[i][pos]))
+                && !isinf(Parser->Data.measdata[i][pos])
+                && (Parser->Data.codetype[i][pos]
+                  && Parser->info[RTCM3_MSM_GLONASS].type[pos]
+                  && Parser->info[RTCM3_MSM_GLONASS].type[pos]
+                  == Parser->Data.codetype[i][pos][1]))
                 {
                   char lli = ' ';
@@ -2588,5 +2597,9 @@
                 if((Parser->Data.dataflags[i] & df)
                 && !isnan(Parser->Data.measdata[i][pos])
-                && !isinf(Parser->Data.measdata[i][pos]))
+                && !isinf(Parser->Data.measdata[i][pos])
+                && (Parser->Data.codetype[i][pos]
+                  && Parser->info[RTCM3_MSM_GALILEO].type[pos]
+                  && Parser->info[RTCM3_MSM_GALILEO].type[pos]
+                  == Parser->Data.codetype[i][pos][1]))
                 {
                   char lli = ' ';
@@ -2639,5 +2652,9 @@
                 if((Parser->Data.dataflags[i] & df)
                 && !isnan(Parser->Data.measdata[i][pos])
-                && !isinf(Parser->Data.measdata[i][pos]))
+                && !isinf(Parser->Data.measdata[i][pos])
+                && (Parser->Data.codetype[i][pos]
+                  && Parser->info[RTCM3_MSM_COMPASS].type[pos]
+                  && Parser->info[RTCM3_MSM_COMPASS].type[pos]
+                  == Parser->Data.codetype[i][pos][1]))
                 {
                   char lli = ' ';
@@ -2676,8 +2693,8 @@
                 && !isnan(Parser->Data.measdata[i][pos])
                 && !isinf(Parser->Data.measdata[i][pos])
-                && (Parser->Data.codetype[i]
+                && (Parser->Data.codetype[i][pos]
                   && Parser->info[RTCM3_MSM_QZSS].type[pos]
                   && Parser->info[RTCM3_MSM_QZSS].type[pos]
-                  == Parser->Data.codetype[i][1]))
+                  == Parser->Data.codetype[i][pos][1]))
                 {
                   char lli = ' ';
@@ -2718,5 +2735,9 @@
                 if((Parser->Data.dataflags[i] & df)
                 && !isnan(Parser->Data.measdata[i][pos])
-                && !isinf(Parser->Data.measdata[i][pos]))
+                && !isinf(Parser->Data.measdata[i][pos])
+                && (Parser->Data.codetype[i][pos]
+                  && Parser->info[RTCM3_MSM_SBAS].type[pos]
+                  && Parser->info[RTCM3_MSM_SBAS].type[pos]
+                  == Parser->Data.codetype[i][pos][1]))
                 {
                   char lli = ' ';
@@ -2749,7 +2770,11 @@
                 int df = Parser->info[RTCM3_MSM_GPS].flags[j];
                 int pos = Parser->info[RTCM3_MSM_GPS].pos[j];
-                if((Parser->Data.dataflags[i] & df)
+                if((Parser->Data.dataflags[pos] & df)
                 && !isnan(Parser->Data.measdata[i][pos])
-                && !isinf(Parser->Data.measdata[i][pos]))
+                && !isinf(Parser->Data.measdata[i][pos])
+                && (Parser->Data.codetype[i][pos]
+                  && Parser->info[RTCM3_MSM_GPS].type[pos]
+                  && Parser->info[RTCM3_MSM_GPS].type[pos]
+                  == Parser->Data.codetype[i][pos][1]))
                 {
                   char lli = ' ';
Index: trunk/rtcm3torinex/lib/rtcm3torinex.h
===================================================================
--- trunk/rtcm3torinex/lib/rtcm3torinex.h	(revision 4372)
+++ trunk/rtcm3torinex/lib/rtcm3torinex.h	(revision 4374)
@@ -308,5 +308,5 @@
   int    snrL1[GNSS_MAXSATS];          /* Important: all the 6 SV-specific fields must */
   int    snrL2[GNSS_MAXSATS];          /* have the same SV-order */
-  const char * codetype[GNSS_MAXSATS]; 
+  const char * codetype[GNSS_MAXSATS][GNSSENTRY_NUMBER];
 };
 
