Index: trunk/psModules/src/objects/pmSourceOutputs.c
===================================================================
--- trunk/psModules/src/objects/pmSourceOutputs.c	(revision 34499)
+++ trunk/psModules/src/objects/pmSourceOutputs.c	(revision 34515)
@@ -227,11 +227,22 @@
     *pltScale = 0.5*(pltScale_x + pltScale_y);
 
+    float posAngle_x, posAngle_y;
     float crossProduct = dTPx_dCHx * dTPy_dCHy - dTPx_dCHy * dTPy_dCHx;
     if  (crossProduct > 0.) {
       *pltScale *= -1.0;
-    }
-
-    float posAngle_x = atan2 (+dTPy_dCHx, +dTPx_dCHx);
-    float posAngle_y = atan2 (-dTPx_dCHy, +dTPy_dCHy);
+      posAngle_x = atan2 (dTPy_dCHx, dTPx_dCHx);
+      posAngle_y = atan2 (dTPy_dCHy, dTPx_dCHy) - M_PI_2;
+    } else {
+      posAngle_x = atan2 (dTPy_dCHx, -dTPx_dCHx);
+      posAngle_y = atan2 (dTPy_dCHy,  dTPx_dCHy) - M_PI_2;
+    }
+
+    // with errors, these may end up on opposite sides of the M_PI boundary.  
+    if (posAngle_x - posAngle_y > M_PI) {
+      posAngle_y += 2.0 * M_PI;
+    }
+    if (posAngle_y - posAngle_x > M_PI) {
+      posAngle_x += 2.0 * M_PI;
+    }
     *posAngle = 0.5*(posAngle_x + posAngle_y);
 
