Index: /branches/czw_branch/20160809/ippconfig/hsc/psastro.config
===================================================================
--- /branches/czw_branch/20160809/ippconfig/hsc/psastro.config	(revision 39776)
+++ /branches/czw_branch/20160809/ippconfig/hsc/psastro.config	(revision 39777)
@@ -35,4 +35,6 @@
   GHOST_MAX_MAG                   F32 -25.0
 END
+
+PSASTRO.USE.MODEL            BOOL TRUE
 
 # extra field for ref stars:
@@ -98,2 +100,3 @@
 PSASTRO.MODEL.REF.CHIP        STR      x050
 PSASTRO.MODEL.REF.CHIP.ANGLE  F32      90.0
+PSASTRO.MODEL.ROT.PARITY      S32      -1
Index: /branches/czw_branch/20160809/ippconfig/recipes/psastro.config
===================================================================
--- /branches/czw_branch/20160809/ippconfig/recipes/psastro.config	(revision 39776)
+++ /branches/czw_branch/20160809/ippconfig/recipes/psastro.config	(revision 39777)
@@ -237,4 +237,5 @@
 PSASTRO.MODEL.REF.CHIP        STR      NONE
 PSASTRO.MODEL.REF.CHIP.ANGLE  F32      0.0
+PSASTRO.MODEL.ROT.PARITY      S32      +1
 PSASTRO.MODEL.FIT.BORESITE    BOOL     FALSE
 PSASTRO.MODEL.SET.BORESITE    BOOL     FALSE
Index: /branches/czw_branch/20160809/psModules/src/astrom/pmAstrometryModel.c
===================================================================
--- /branches/czw_branch/20160809/psModules/src/astrom/pmAstrometryModel.c	(revision 39776)
+++ /branches/czw_branch/20160809/psModules/src/astrom/pmAstrometryModel.c	(revision 39777)
@@ -687,8 +687,10 @@
     char *refChip  = psMetadataLookupStr(&status, file->fpa->concepts, "REF_CHIP"); REQUIRE (status, "missing REF_CHIP");
 
+    int rotatorParity = psMetadataLookupS32(&status, file->fpa->concepts, "ROT.PARITY"); REQUIRE (status, "missing ROT.PARITY");
+    
     // XXX we've swapped the sign and parity of POS (add to model)
     // apply true posangle = -(POS - POS_ZERO)
     psLogMsg ("psModules.astrom", 4, "Position Angle: %f, Model Position Angle Zero Point: %f\n", POS, PosZero);
-    psPlaneTransform *fromTPA = psPlaneTransformRotate (NULL, file->fpa->fromTPA, (PosZero - POS));
+    psPlaneTransform *fromTPA = psPlaneTransformRotate (NULL, file->fpa->fromTPA, rotatorParity * (PosZero - POS));
     psFree (file->fpa->fromTPA);
     file->fpa->fromTPA = fromTPA;
Index: /branches/czw_branch/20160809/psastro/src/psastroModelAdjust.c
===================================================================
--- /branches/czw_branch/20160809/psastro/src/psastroModelAdjust.c	(revision 39776)
+++ /branches/czw_branch/20160809/psastro/src/psastroModelAdjust.c	(revision 39777)
@@ -58,4 +58,8 @@
     } 
 
+    int rotatorParity = psMetadataLookupS32(&status, recipe, "PSASTRO.MODEL.ROT.PARITY");
+    if (!status) psAbort ("Can't find recipe option PSASTRO.MODEL.ROT.PARITY");
+    psMetadataAddS32 (output->fpa->concepts, PS_LIST_TAIL, "FPA.ROT.PARITY", PS_META_REPLACE, "rotator parity parameter", rotatorParity);
+    
     // get reference chip from name
     pmChip *refChip = pmConceptsChipFromName (output->fpa, refChipName);
@@ -86,5 +90,5 @@
 	psFree (PT);
     }
-
+    
     // rotate the chip-to-FPA transforms to have 0.0 posangle for refChip; 
     // compensate by rotating fpa to TPA transform
@@ -95,8 +99,8 @@
 
     // chipAngle should be refChipAngleNominal @ POSANGLE = 0.0
-    float posAngleOffset = chipAngle - refChipAngleNominal;
-
-    fprintf (stderr, "chipAngle is: %f, at PA = 0.0, it should be %f, rotating model by %f\n", 
-	     chipAngle*PS_DEG_RAD, refChipAngleNominal*PS_DEG_RAD, posAngleOffset*PS_DEG_RAD);
+    float posAngleOffset = rotatorParity * (chipAngle - refChipAngleNominal);
+
+    fprintf (stderr, "chipAngle is: %f, at PA = 0.0, it should be %f, rotating model by %f (parity %d)\n", 
+	     chipAngle*PS_DEG_RAD, refChipAngleNominal*PS_DEG_RAD, posAngleOffset*PS_DEG_RAD, rotatorParity);
 
     // psMetadataAddF32 (output->fpa->concepts, PS_LIST_TAIL, "FPA.POSANGLE", PS_META_REPLACE, "boresite parameter", posangle);
