Index: trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 10599)
+++ trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 10617)
@@ -240,5 +240,4 @@
     ii++) {
     if (corrIsOutOfRange(_clkOrb.Sat[ii])) {
-      emit newMessage("RTCM3coDecoder: Correction out of range "  + _staID.toLatin1(), true);
       continue;
     }
@@ -630,16 +629,142 @@
 bool RTCM3coDecoder::corrIsOutOfRange(const SsrCorr::ClockOrbit::SatData& coSat) {
 
-  if (fabs(coSat.Clock.DeltaA0) > 209.7151)   {return true;}
-  if (fabs(coSat.Clock.DeltaA1) > 1.048575)   {return true;}
-  if (fabs(coSat.Clock.DeltaA2) > 1.34217726) {return true;}
-
-  if (fabs(coSat.Orbit.DeltaRadial)     > 209.7151) {return true;}
-  if (fabs(coSat.Orbit.DeltaAlongTrack) > 209.7148) {return true;}
-  if (fabs(coSat.Orbit.DeltaCrossTrack) > 209.7148) {return true;}
-
-  if (fabs(coSat.Orbit.DotDeltaRadial)     > 1.048575) {return true;}
-  if (fabs(coSat.Orbit.DotDeltaAlongTrack) > 1.048572) {return true;}
-  if (fabs(coSat.Orbit.DotDeltaCrossTrack) > 1.048572) {return true;}
-  return false;
+  QString ssrParStr;
+  QString ssrParValue;
+  bool corrIsOutOfRange = false;
+
+  switch (_type) {
+    // ======== //
+    // IGS SSR  //
+    // ======== //
+    case  IGSssr:
+      if (coSat.Clock.DeltaA0 < -209.7151 ||
+          coSat.Clock.DeltaA0 > +209.7151)   {
+        ssrParStr = "Clock::DeltaA0";
+        ssrParValue = QString::number(coSat.Clock.DeltaA0, 'f', 4);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Clock.DeltaA1 < -1.048575 ||
+          coSat.Clock.DeltaA1 > +1.048575)  {
+        ssrParStr = "Clock::DeltaA1";
+        ssrParValue = QString::number(coSat.Clock.DeltaA1, 'f', 6);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Clock.DeltaA2 < -1.3421772 ||
+          coSat.Clock.DeltaA2 > +1.3421772) {
+        ssrParStr = "Clock::DeltaA2";
+        ssrParValue = QString::number(coSat.Clock.DeltaA2, 'f', 7);
+        corrIsOutOfRange = true;
+      }
+
+      if (coSat.Orbit.DeltaRadial   < -209.7151 ||
+          coSat.Orbit.DeltaRadial   > +209.7151) {
+        ssrParStr = "Orbit::DeltaRadial";
+        ssrParValue = QString::number(coSat.Orbit.DeltaRadial, 'f', 4);
+        corrIsOutOfRange = true;
+      }
+
+      if (coSat.Orbit.DeltaAlongTrack < -209.7148 ||
+          coSat.Orbit.DeltaAlongTrack > +209.7148) {
+        ssrParStr = "Orbit::DeltaAlongTrack";
+        ssrParValue = QString::number(coSat.Orbit.DeltaAlongTrack, 'f', 4);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Orbit.DeltaCrossTrack < -209.7148 ||
+          coSat.Orbit.DeltaCrossTrack > +209.7148) {
+        ssrParStr = "Orbit::DeltaCrossTrack";
+        ssrParValue = QString::number(coSat.Orbit.DeltaCrossTrack, 'f', 4);
+        corrIsOutOfRange = true;
+      }
+
+      if (coSat.Orbit.DotDeltaRadial < -1.048575 ||
+          coSat.Orbit.DotDeltaRadial > +1.048575) {
+        ssrParStr = "Orbit::DotDeltaRadial";
+        ssrParValue = QString::number(coSat.Orbit.DotDeltaRadial, 'f', 6);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Orbit.DotDeltaAlongTrack < -1.048572 ||
+          coSat.Orbit.DotDeltaAlongTrack > +1.048572) {
+        ssrParStr = "Orbit::DotDeltaAlongTrack";
+        ssrParValue = QString::number(coSat.Orbit.DotDeltaAlongTrack, 'f', 6);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Orbit.DotDeltaCrossTrack < -1.048572 ||
+          coSat.Orbit.DotDeltaCrossTrack > +1.048572) {
+        ssrParStr = "Orbit::DotDeltaCrossTrack";
+        ssrParValue = QString::number(coSat.Orbit.DotDeltaCrossTrack, 'f', 6);
+        corrIsOutOfRange = true;
+      }
+      break;
+    //==========//
+    // RTCM SSR //
+    // =========//
+    case RTCMssr:
+      if (coSat.Clock.DeltaA0 < -209.7151 ||
+          coSat.Clock.DeltaA0 > +209.7151)   {
+        ssrParStr = "Clock::DeltaA0";
+        ssrParValue = QString::number(coSat.Clock.DeltaA0, 'f', 4);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Clock.DeltaA1 < -1.048575 ||
+          coSat.Clock.DeltaA1 > +1.048575)  {
+        ssrParStr = "Clock::DeltaA1";
+        ssrParValue = QString::number(coSat.Clock.DeltaA1, 'f', 6);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Clock.DeltaA2 < -1.34217726 ||
+          coSat.Clock.DeltaA2 > +1.34217726) {
+        ssrParStr = "Clock::DeltaA2";
+        ssrParValue = QString::number(coSat.Clock.DeltaA2, 'f', 8);
+        corrIsOutOfRange = true;
+      }
+
+      if (coSat.Orbit.DeltaRadial   < -209.7151 ||
+          coSat.Orbit.DeltaRadial   > +209.7151) {
+        ssrParStr = "Orbit::DeltaRadial";
+        ssrParValue = QString::number(coSat.Orbit.DeltaRadial, 'f', 4);
+        corrIsOutOfRange = true;
+      }
+
+      if (coSat.Orbit.DeltaAlongTrack < -209.7148 ||
+          coSat.Orbit.DeltaAlongTrack > +209.7148) {
+        ssrParStr = "Orbit::DeltaAlongTrack";
+        ssrParValue = QString::number(coSat.Orbit.DeltaAlongTrack, 'f', 4);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Orbit.DeltaCrossTrack < -209.7148 ||
+          coSat.Orbit.DeltaCrossTrack > +209.7148) {
+        ssrParStr = "Orbit::DeltaCrossTrack";
+        ssrParValue = QString::number(coSat.Orbit.DeltaCrossTrack, 'f', 4);
+        corrIsOutOfRange = true;
+      }
+
+      if (coSat.Orbit.DotDeltaRadial < -1.048575 ||
+          coSat.Orbit.DotDeltaRadial > +1.048575) {
+        ssrParStr = "Orbit::DotDeltaRadial";
+        ssrParValue = QString::number(coSat.Orbit.DotDeltaRadial, 'f', 6);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Orbit.DotDeltaAlongTrack < -1.048572 ||
+          coSat.Orbit.DotDeltaAlongTrack > +1.048572) {
+        ssrParStr = "Orbit::DotDeltaAlongTrack";
+        ssrParValue = QString::number(coSat.Orbit.DotDeltaAlongTrack, 'f', 6);
+        corrIsOutOfRange = true;
+      }
+      if (coSat.Orbit.DotDeltaCrossTrack < -1.048572 ||
+          coSat.Orbit.DotDeltaCrossTrack > +1.048572) {
+        ssrParStr = "Orbit::DotDeltaCrossTrack";
+        ssrParValue = QString::number(coSat.Orbit.DotDeltaCrossTrack, 'f', 6);
+        corrIsOutOfRange = true;
+      }
+      break;
+  }
+
+  if (corrIsOutOfRange) {
+    emit newMessage("RTCM3coDecoder: Correction " + ssrParStr.toLatin1()
+        + " (" + ssrParValue.toLatin1() + ") "
+        + "is out of range "  + _staID.toLatin1(), true);
+  }
+
+  return corrIsOutOfRange;
 }
 
