Index: trunk/MagicSoft/Mars/mpointing/MSrcPosCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mpointing/MSrcPosCalc.cc	(revision 6992)
+++ trunk/MagicSoft/Mars/mpointing/MSrcPosCalc.cc	(revision 7028)
@@ -291,14 +291,23 @@
     //--------------------------------------------
 
-    // pos0[3] = TMath::Cos(theta0)
-
-    const Double_t YC0 = TMath::Cos(theta0)*TMath::Tan(theta)*TMath::Cos(phi-phi0) - TMath::Sin(theta0);
-    const Double_t YC1 = TMath::Cos(theta0) + TMath::Sin(theta0)*TMath::Tan(theta);
-    const Double_t YC  = YC0 / YC1;
-
-    //--------------------------------------------
-
-    const Double_t XC0 =  TMath::Cos(theta0) - YC*TMath::Sin(theta0);
-    const Double_t XC  = -TMath::Sin(phi-phi0) * TMath::Tan(theta) * XC0;
+    /* --- OLD ---
+     const Double_t YC0 = TMath::Cos(theta0)*TMath::Tan(theta)*TMath::Cos(phi-phi0) - TMath::Sin(theta0);
+     const Double_t YC1 = TMath::Cos(theta0) + TMath::Sin(theta0)*TMath::Tan(theta);
+     const Double_t YC  = YC0 / YC1;
+
+     const Double_t XC0 =  TMath::Cos(theta0) - YC*TMath::Sin(theta0);
+     const Double_t XC  = -TMath::Sin(phi-phi0) * TMath::Tan(theta) * XC0;
+     */
+
+    /* --- NEW --- */
+    const Double_t XC0 = TMath::Sin(theta)*TMath::Sin(phi-phi0);
+    const Double_t XC1 = TMath::Cos(theta0)*TMath::Cos(theta);
+    const Double_t XC2 = TMath::Sin(theta0)*TMath::Sin(theta)*TMath::Cos(phi-phi0);
+
+    const Double_t YC0 = TMath::Sin(theta0)*TMath::Cos(theta);
+    const Double_t YC1 = TMath::Cos(theta0)*TMath::Sin(theta)*TMath::Cos(phi-phi0);
+
+    const Double_t XC  =  - XC0     / (XC1 + XC2);
+    const Double_t YC  = (-YC0+YC1) / (XC1 + XC2);
 
     //--------------------------------------------
