Index: trunk/rtcm3torinex/rtcm3torinex.c
===================================================================
--- trunk/rtcm3torinex/rtcm3torinex.c	(revision 362)
+++ trunk/rtcm3torinex/rtcm3torinex.c	(revision 363)
@@ -1,5 +1,5 @@
 /*
   Converter for RTCM3 data to RINEX.
-  $Id: rtcm3torinex.c,v 1.13 2006/11/24 09:53:42 stoecker Exp $
+  $Id: rtcm3torinex.c,v 1.14 2006/11/29 10:43:15 stoecker Exp $
   Copyright (C) 2005-2006 by Dirk Stoecker <stoecker@euronik.eu>
 
@@ -51,5 +51,5 @@
 
 /* CVS revision and version */
-static char revisionstr[] = "$Revision: 1.13 $";
+static char revisionstr[] = "$Revision: 1.14 $";
 
 static uint32_t CRC24(long size, const unsigned char *buf)
@@ -729,10 +729,17 @@
   {
 #define CHECKFLAGS(a, b) \
-    if(flags & GNSSDF_##a##DATA \
-    && !data[RINEXENTRY_##b##DATA]) \
+    if(flags & GNSSDF_##a##DATA) \
     { \
-      Parser->dataflag[Parser->numdatatypes] = GNSSDF_##a##DATA; \
-      Parser->datapos[Parser->numdatatypes++] = data[RINEXENTRY_##b##DATA] \
-      = GNSSENTRY_##a##DATA; \
+      if(data[RINEXENTRY_##b##DATA]) \
+      { \
+        Parser->dataflag2[data[RINEXENTRY_##b##DATA]-1] = GNSSDF_##a##DATA; \
+        Parser->datapos2[data[RINEXENTRY_##b##DATA]-1] = GNSSENTRY_##a##DATA; \
+      } \
+      else \
+      { \
+        Parser->dataflag[Parser->numdatatypes] = GNSSDF_##a##DATA; \
+        Parser->datapos[Parser->numdatatypes] = GNSSENTRY_##a##DATA; \
+        data[RINEXENTRY_##b##DATA] = ++Parser->numdatatypes; \
+      } \
       snprintf(tbuffer+tbufferpos, sizeof(tbuffer)-tbufferpos, "    "#b); \
       tbufferpos += 6; \
@@ -956,7 +963,27 @@
         for(j = 0; j < Parser->numdatatypes; ++j)
         {
-          if(!(Parser->Data.dataflags[i] & Parser->dataflag[j])
-          || isnan(Parser->Data.measdata[i][Parser->datapos[j]])
-          || isinf(Parser->Data.measdata[i][Parser->datapos[j]]))
+          int v = 0;
+          int df = Parser->dataflag[j];
+          int pos = Parser->datapos[j];
+          if((Parser->Data.dataflags[i] & df)
+          && !isnan(Parser->Data.measdata[i][pos])
+          && !isinf(Parser->Data.measdata[i][pos]))
+          {
+            v = 1;
+          }
+          else
+          {
+            df = Parser->dataflag2[j];
+            pos = Parser->datapos2[j];
+
+            if((Parser->Data.dataflags[i] & df)
+            && !isnan(Parser->Data.measdata[i][pos])
+            && !isinf(Parser->Data.measdata[i][pos]))
+            {
+              v = 1;
+            }
+          }
+
+          if(!v)
           { /* no or illegal data */
             RTCM3Text("                ");
@@ -966,5 +993,5 @@
             char lli = ' ';
             char snr = ' ';
-            if(Parser->dataflag[j] & (GNSSDF_L1CDATA|GNSSDF_L1PDATA))
+            if(df & (GNSSDF_L1CDATA|GNSSDF_L1PDATA))
             {
               if(Parser->Data.dataflags[i] & GNSSDF_LOCKLOSSL1)
@@ -972,5 +999,5 @@
               snr = '0'+Parser->Data.snrL1[i];
             }
-            if(Parser->dataflag[j] & (GNSSDF_L2CDATA|GNSSDF_L2PDATA))
+            if(df & (GNSSDF_L2CDATA|GNSSDF_L2PDATA))
             {
               if(Parser->Data.dataflags[i] & GNSSDF_LOCKLOSSL2)
@@ -979,5 +1006,5 @@
             }
             RTCM3Text("%14.3f%c%c",
-            Parser->Data.measdata[i][Parser->datapos[j]],lli,snr);
+            Parser->Data.measdata[i][pos],lli,snr);
           }
           if(j%5 == 4 || j == Parser->numdatatypes-1)
@@ -990,5 +1017,5 @@
 
 #ifndef NO_RTCM3_MAIN
-static char datestr[]     = "$Date: 2006/11/24 09:53:42 $";
+static char datestr[]     = "$Date: 2006/11/29 10:43:15 $";
 
 /* The string, which is send as agent in HTTP request */
Index: trunk/rtcm3torinex/rtcm3torinex.h
===================================================================
--- trunk/rtcm3torinex/rtcm3torinex.h	(revision 362)
+++ trunk/rtcm3torinex/rtcm3torinex.h	(revision 363)
@@ -4,5 +4,5 @@
 /*
   Converter for RTCM3 data to RINEX.
-  $Id: rtcm3torinex.h,v 1.3 2006/11/15 12:31:31 stoecker Exp $
+  $Id: rtcm3torinex.h,v 1.4 2006/11/24 09:53:42 stoecker Exp $
   Copyright (C) 2005-2006 by Dirk Stoecker <stoecker@euronik.eu>
 
@@ -124,4 +124,6 @@
   int    datapos[RINEXENTRY_NUMBER];
   int    dataflag[RINEXENTRY_NUMBER];
+  int    datapos2[RINEXENTRY_NUMBER];
+  int    dataflag2[RINEXENTRY_NUMBER];
   int    numdatatypes;
   int    validwarning;
