Index: /trunk/BNC/bncmodel.cpp
===================================================================
--- /trunk/BNC/bncmodel.cpp	(revision 2116)
+++ /trunk/BNC/bncmodel.cpp	(revision 2117)
@@ -440,6 +440,13 @@
       double rhoCmp = cmpValue(satData);
     
+      double ellWgtCoeff = 1.0;
+      double eleD = satData->eleSat * 180.0 / M_PI;
+      if (eleD < 25.0) {
+        ellWgtCoeff = 2.5 - (eleD - 10.0) * 0.1;
+        ellWgtCoeff *= ellWgtCoeff;
+      }
+
       ll(iObs)      = satData->P3 - rhoCmp;
-      PP(iObs,iObs) = 1.0 / (sig_P3 * sig_P3);
+      PP(iObs,iObs) = 1.0 / (sig_P3 * sig_P3) / ellWgtCoeff;
       for (int iPar = 1; iPar <= _params.size(); iPar++) {
         AA(iObs, iPar) = _params[iPar-1]->partial(satData, "");
@@ -449,5 +456,5 @@
         ++iObs;
         ll(iObs)      = satData->L3 - rhoCmp;
-        PP(iObs,iObs) = 1.0 / (sig_L3 * sig_L3);
+        PP(iObs,iObs) = 1.0 / (sig_L3 * sig_L3) / ellWgtCoeff;
         for (int iPar = 1; iPar <= _params.size(); iPar++) {
           if (_params[iPar-1]->type == bncParam::AMB_L3 &&
