Index: /trunk/BNC/src/rinex/reqcanalyze.cpp
===================================================================
--- /trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 4697)
+++ /trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 4698)
@@ -448,5 +448,4 @@
     bool    slipL1  = false;
     bool    slipL2  = false;
-    bool    slipMP  = false;
     double  meanMP1 = 0.0;
     double  meanMP2 = 0.0;
@@ -540,16 +539,39 @@
       }
 
+      meanMP1 += oneObs->_MP1;
+      meanMP2 += oneObs->_MP2;
+    }
+
+    // Compute the Multipath
+    // ---------------------
+    bool slipMP = false;
+    meanMP1 /= numEpo;
+    meanMP2 /= numEpo;
+    double MP1 = 0.0;
+    double MP2 = 0.0;
+    for (int ii = 0; ii < numEpo; ii++) {
+      int iEpo = chunkStart + ii;
+      const t_oneObs* oneObs = allObs._oneObsVec[iEpo];
+      double diff1 = oneObs->_MP1 - meanMP1;
+      double diff2 = oneObs->_MP2 - meanMP2;
+
       // Check Slip Threshold
       // --------------------
-      if (ii > 0) {
-        double diff1 = oneObs->_MP1 - allObs._oneObsVec[iEpo-1]->_MP1;
-        double diff2 = oneObs->_MP2 - allObs._oneObsVec[iEpo-1]->_MP2;
-        if (fabs(diff1) > SLIPTRESH || fabs(diff2) > SLIPTRESH) {
-          slipMP = true;
-        }
-      }
-
-      meanMP1 += oneObs->_MP1;
-      meanMP2 += oneObs->_MP2;
+      if (fabs(diff1) > SLIPTRESH || fabs(diff2) > SLIPTRESH) {
+        slipMP = true;
+        break;
+      }
+
+      MP1 += diff1 * diff1;
+      MP2 += diff2 * diff2;
+    }
+    if (slipMP) {
+      slipL1 = true;
+      slipL2 = true;
+    } else {
+      MP1 = sqrt(MP1 / (numEpo-1));
+      MP2 = sqrt(MP2 / (numEpo-1));
+      (*dataMP1)  << (new t_polarPoint(aziDeg, zenDeg, MP1));
+      (*dataMP2)  << (new t_polarPoint(aziDeg, zenDeg, MP2));
     }
 
@@ -587,25 +609,4 @@
     (*dataSNR1) << (new t_polarPoint(aziDeg, zenDeg, minSNR1));
     (*dataSNR2) << (new t_polarPoint(aziDeg, zenDeg, minSNR2));
-
-    // Compute the Multipath
-    // ---------------------
-    if (!slipMP) {
-      meanMP1 /= numEpo;
-      meanMP2 /= numEpo;
-      double MP1 = 0.0;
-      double MP2 = 0.0;
-      for (int ii = 0; ii < numEpo; ii++) {
-        int iEpo = chunkStart + ii;
-        const t_oneObs* oneObs = allObs._oneObsVec[iEpo];
-        double diff1 = oneObs->_MP1 - meanMP1;
-        double diff2 = oneObs->_MP2 - meanMP2;
-        MP1 += diff1 * diff1;
-        MP2 += diff2 * diff2;
-      }
-      MP1 = sqrt(MP1 / (numEpo-1));
-      MP2 = sqrt(MP2 / (numEpo-1));
-      (*dataMP1)  << (new t_polarPoint(aziDeg, zenDeg, MP1));
-      (*dataMP2)  << (new t_polarPoint(aziDeg, zenDeg, MP2));
-    }
   }
 }
