Index: trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 5563)
+++ trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 5576)
@@ -82,4 +82,8 @@
   memset(&_co, 0, sizeof(_co));
   memset(&_bias, 0, sizeof(_bias));
+
+  _providerID[0] = -1;
+  _providerID[1] = -1;
+  _providerID[2] = -1;
 }
 
@@ -220,4 +224,6 @@
         }
 
+        checkProviderID();
+
         QStringList asciiLines = corrsToASCIIlines(GPSweek, _GPSweeks, 
                                                    _co, &_bias);
@@ -309,6 +315,5 @@
                      "   %8.3f %8.3f %8.3f %8.3f"
                      "   %10.5f %10.5f %10.5f %10.5f"
-                     "   %10.5f"
-                     "   %5d %2d %2d",
+                     "   %10.5f",
                      co.Sat[ii].IOD, 
                      co.Sat[ii].Clock.DeltaA0,
@@ -320,6 +325,5 @@
                      co.Sat[ii].Orbit.DotDeltaAlongTrack,
                      co.Sat[ii].Orbit.DotDeltaCrossTrack,
-                     co.Sat[ii].Clock.DeltaA2,
-                     co.SSRProviderID, co.SSRSolutionID, co.SSRIOD);
+                     co.Sat[ii].Clock.DeltaA2);
         retLines << linePart+line;
       }
@@ -332,6 +336,5 @@
         line.sprintf("   %3d"
                      "   %8.3f %8.3f %8.3f"
-                     "   %10.5f %10.5f %10.5f"
-                     "   %5d %2d %2d",
+                     "   %10.5f %10.5f %10.5f",
                      co.Sat[ii].IOD, 
                      co.Sat[ii].Orbit.DeltaRadial, 
@@ -340,6 +343,5 @@
                      co.Sat[ii].Orbit.DotDeltaRadial, 
                      co.Sat[ii].Orbit.DotDeltaAlongTrack,
-                     co.Sat[ii].Orbit.DotDeltaCrossTrack,
-                     co.SSRProviderID, co.SSRSolutionID, co.SSRIOD);
+                     co.Sat[ii].Orbit.DotDeltaCrossTrack);
         retLines << linePart+line;
       }
@@ -416,2 +418,33 @@
   return retLines;
 }
+
+// 
+////////////////////////////////////////////////////////////////////////////
+void RTCM3coDecoder::checkProviderID() {
+
+  if (_co.SSRProviderID == 0 && _co.SSRSolutionID == 0 && _co.SSRIOD == 0) {
+    return;
+  }
+
+  int newProviderID[3];
+  newProviderID[0] = _co.SSRProviderID;
+  newProviderID[1] = _co.SSRSolutionID;
+  newProviderID[2] = _co.SSRIOD;
+
+  bool alreadySet = false;
+  bool different  = false;
+
+  for (unsigned ii = 0; ii < 3; ii++) {
+    if (_providerID[ii] != -1) {
+      alreadySet = true;
+    }
+    if (_providerID[ii] != newProviderID[ii]) {
+      different = true;
+    }
+    _providerID[ii] = newProviderID[ii];
+  }
+    
+  if (alreadySet && different) {
+    emit newMessage("RTCM3coDecoder: Provider Changed\n", true);
+  }
+}
Index: trunk/BNC/src/RTCM3/RTCM3coDecoder.h
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3coDecoder.h	(revision 5563)
+++ trunk/BNC/src/RTCM3/RTCM3coDecoder.h	(revision 5576)
@@ -55,4 +55,5 @@
  private:
   void printLine(const QString& line, int GPSweek, double GPSweeks);
+  void checkProviderID();
   std::ofstream* _out;
   QString        _staID;
@@ -63,4 +64,5 @@
   ClockOrbit     _co;
   Bias           _bias;
+  int            _providerID[3];
 };
 
