Index: trunk/rtcm3torinex/lib/rtcm3torinex.c
===================================================================
--- trunk/rtcm3torinex/lib/rtcm3torinex.c	(revision 4374)
+++ trunk/rtcm3torinex/lib/rtcm3torinex.c	(revision 4383)
@@ -1195,4 +1195,7 @@
           start = PRN_GLONASS_START;
         }
+
+        for(i = 0; i < RTCM3_MSM_NUMSAT; ++i)
+          extsat[i] = 15;
 
         switch(sys)
@@ -1464,5 +1467,5 @@
                     gnss->measdata[num][cd.typeR] = psr[count]*LIGHTSPEED/1000.0
                     +(rrmod[numsat])*LIGHTSPEED/1000.0;
-                    gnss->dataflags[num] |= (1<<cd.typeR);
+                    gnss->dataflags[num] |= (1LL<<cd.typeR);
                   }
                   break;
@@ -1477,5 +1480,5 @@
                       handle->lastlockmsm[j][i] = ll[count];
                     }
-                    gnss->dataflags[num] |= (1<<cd.typeP);
+                    gnss->dataflags[num] |= (1LL<<cd.typeP);
                   }
                   break;
@@ -1485,5 +1488,5 @@
                     gnss->measdata[num][cd.typeR] = psr[count]*LIGHTSPEED/1000.0
                     +(rrmod[numsat])*LIGHTSPEED/1000.0;
-                    gnss->dataflags[num] |= (1<<cd.typeR);
+                    gnss->dataflags[num] |= (1LL<<cd.typeR);
                   }
 
@@ -1497,5 +1500,5 @@
                       handle->lastlockmsm[j][i] = ll[count];
                     }
-                    gnss->dataflags[num] |= (1<<cd.typeP);
+                    gnss->dataflags[num] |= (1LL<<cd.typeP);
                   }
                   break;
@@ -1505,5 +1508,5 @@
                     gnss->measdata[num][cd.typeR] = psr[count]*LIGHTSPEED/1000.0
                     +(rrmod[numsat]+rrint[numsat])*LIGHTSPEED/1000.0;
-                    gnss->dataflags[num] |= (1<<cd.typeR);
+                    gnss->dataflags[num] |= (1LL<<cd.typeR);
                   }
 
@@ -1517,9 +1520,9 @@
                       handle->lastlockmsm[j][i] = ll[count];
                     }
-                    gnss->dataflags[num] |= (1<<cd.typeP);
+                    gnss->dataflags[num] |= (1LL<<cd.typeP);
                   }
 
                   gnss->measdata[num][cd.typeS] = cnr[count];
-                    gnss->dataflags[num] |= (1<<cd.typeS);
+                    gnss->dataflags[num] |= (1LL<<cd.typeS);
                   break;
                 case 5:
@@ -1528,5 +1531,5 @@
                     gnss->measdata[num][cd.typeR] = psr[count]*LIGHTSPEED/1000.0
                     +(rrmod[numsat]+rrint[numsat])*LIGHTSPEED/1000.0;
-                    gnss->dataflags[num] |= (1<<cd.typeR);
+                    gnss->dataflags[num] |= (1LL<<cd.typeR);
                   }
 
@@ -1540,5 +1543,5 @@
                       handle->lastlockmsm[j][i] = ll[count];
                     }
-                    gnss->dataflags[num] |= (1<<cd.typeP);
+                    gnss->dataflags[num] |= (1LL<<cd.typeP);
                   }
 
@@ -1550,5 +1553,5 @@
                     gnss->measdata[num][cd.typeD] = -(dop[count]
                     +rdop[numsat])/wl;
-                    gnss->dataflags[num] |= (1<<cd.typeD);
+                    gnss->dataflags[num] |= (1LL<<cd.typeD);
                   }
                   break;
@@ -1558,5 +1561,5 @@
                     gnss->measdata[num][cd.typeR] = psr[count]*LIGHTSPEED/1000.0
                     +(rrmod[numsat]+rrint[numsat])*LIGHTSPEED/1000.0;
-                    gnss->dataflags[num] |= (1<<cd.typeR);
+                    gnss->dataflags[num] |= (1LL<<cd.typeR);
                   }
 
@@ -1570,9 +1573,9 @@
                       handle->lastlockmsm[j][i] = ll[count];
                     }
-                    gnss->dataflags[num] |= (1<<cd.typeP);
+                    gnss->dataflags[num] |= (1LL<<cd.typeP);
                   }
 
                   gnss->measdata[num][cd.typeS] = cnr[count];
-                    gnss->dataflags[num] |= (1<<cd.typeS);
+                    gnss->dataflags[num] |= (1LL<<cd.typeS);
                   break;
                 case 7:
@@ -1581,5 +1584,5 @@
                     gnss->measdata[num][cd.typeR] = psr[count]*LIGHTSPEED/1000.0
                     +(rrmod[numsat]+rrint[numsat])*LIGHTSPEED/1000.0;
-                    gnss->dataflags[num] |= (1<<cd.typeR);
+                    gnss->dataflags[num] |= (1LL<<cd.typeR);
                   }
 
@@ -1593,9 +1596,9 @@
                       handle->lastlockmsm[j][i] = ll[count];
                     }
-                    gnss->dataflags[num] |= (1<<cd.typeP);
+                    gnss->dataflags[num] |= (1LL<<cd.typeP);
                   }
 
                   gnss->measdata[num][cd.typeS] = cnr[count];
-                    gnss->dataflags[num] |= (1<<cd.typeS);
+                    gnss->dataflags[num] |= (1LL<<cd.typeS);
 
                   if(dop[count] > -1.6384)
@@ -1603,5 +1606,5 @@
                     gnss->measdata[num][cd.typeD] = -(dop[count]
                     +rdop[numsat])/wl;
-                    gnss->dataflags[num] |= (1<<cd.typeD);
+                    gnss->dataflags[num] |= (1LL<<cd.typeD);
                   }
                   break;
@@ -1966,12 +1969,12 @@
     CHECKFLAGSNEW(GPS, D5,  D5)
     CHECKFLAGSNEW(GPS, S5,  S5)
-    CHECKFLAGSNEW(GPS, P2,  C2P)
-    CHECKFLAGSNEW(GPS, L2P, L2P)
-    CHECKFLAGSNEW(GPS, D2P, D2P)
-    CHECKFLAGSNEW(GPS, S2P, S2P)
-    CHECKFLAGSNEW(GPS, C2,  C2X)
-    CHECKFLAGSNEW(GPS, L2C, L2X)
-    CHECKFLAGSNEW(GPS, D2C, D2X)
-    CHECKFLAGSNEW(GPS, S2C, S2X)
+    CHECKFLAGSNEW(GPS, P2,  C2W)
+    CHECKFLAGSNEW(GPS, L2P, L2W)
+    CHECKFLAGSNEW(GPS, D2P, D2W)
+    CHECKFLAGSNEW(GPS, S2P, S2W)
+    CHECKFLAGSNEW(GPS, C2,  C2)
+    CHECKFLAGSNEW(GPS, L2C, L2)
+    CHECKFLAGSNEW(GPS, D2C, D2)
+    CHECKFLAGSNEW(GPS, S2C, S2)
     CHECKFLAGSNEW(GPS, C1N, C1)
     CHECKFLAGSNEW(GPS, L1N, L1)
@@ -2556,5 +2559,5 @@
               for(j = 0; j < Parser->info[RTCM3_MSM_GLONASS].numtypes; ++j)
               {
-                int df = Parser->info[RTCM3_MSM_GLONASS].flags[j];
+                long long df = Parser->info[RTCM3_MSM_GLONASS].flags[j];
                 int pos = Parser->info[RTCM3_MSM_GLONASS].pos[j];
                 if((Parser->Data.dataflags[i] & df)
@@ -2593,5 +2596,5 @@
               for(j = 0; j < Parser->info[RTCM3_MSM_GALILEO].numtypes; ++j)
               {
-                int df = Parser->info[RTCM3_MSM_GALILEO].flags[j];
+                long long df = Parser->info[RTCM3_MSM_GALILEO].flags[j];
                 int pos = Parser->info[RTCM3_MSM_GALILEO].pos[j];
                 if((Parser->Data.dataflags[i] & df)
@@ -2648,5 +2651,5 @@
               for(j = 0; j < Parser->info[RTCM3_MSM_COMPASS].numtypes; ++j)
               {
-                int df = Parser->info[RTCM3_MSM_COMPASS].flags[j];
+                long long df = Parser->info[RTCM3_MSM_COMPASS].flags[j];
                 int pos = Parser->info[RTCM3_MSM_COMPASS].pos[j];
                 if((Parser->Data.dataflags[i] & df)
@@ -2688,5 +2691,5 @@
               for(j = 0; j < Parser->info[RTCM3_MSM_QZSS].numtypes; ++j)
               {
-                int df = Parser->info[RTCM3_MSM_QZSS].flags[j];
+                long long df = Parser->info[RTCM3_MSM_QZSS].flags[j];
                 int pos = Parser->info[RTCM3_MSM_QZSS].pos[j];
                 if((Parser->Data.dataflags[i] & df)
@@ -2731,5 +2734,5 @@
               for(j = 0; j < Parser->info[RTCM3_MSM_SBAS].numtypes; ++j)
               {
-                int df = Parser->info[RTCM3_MSM_SBAS].flags[j];
+                long long df = Parser->info[RTCM3_MSM_SBAS].flags[j];
                 int pos = Parser->info[RTCM3_MSM_SBAS].pos[j];
                 if((Parser->Data.dataflags[i] & df)
@@ -2768,7 +2771,7 @@
               for(j = 0; j < Parser->info[RTCM3_MSM_GPS].numtypes; ++j)
               {
-                int df = Parser->info[RTCM3_MSM_GPS].flags[j];
+                long long df = Parser->info[RTCM3_MSM_GPS].flags[j];
                 int pos = Parser->info[RTCM3_MSM_GPS].pos[j];
-                if((Parser->Data.dataflags[pos] & df)
+                if((Parser->Data.dataflags[i] & df)
                 && !isnan(Parser->Data.measdata[i][pos])
                 && !isinf(Parser->Data.measdata[i][pos])
@@ -2892,5 +2895,5 @@
             {
               int v = 0;
-              int df = Parser->flags[j];
+              long long df = Parser->flags[j];
               int pos = Parser->pos[j];
               if((Parser->Data.dataflags[i] & df)
