Index: trunk/psModules/src/astrom/pmAstrometryDistortion.c
===================================================================
--- trunk/psModules/src/astrom/pmAstrometryDistortion.c	(revision 15102)
+++ trunk/psModules/src/astrom/pmAstrometryDistortion.c	(revision 15254)
@@ -7,6 +7,6 @@
 *  @author EAM, IfA
 *
-*  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2007-06-06 00:43:19 $
+*  @version $Revision: 1.20 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2007-10-09 19:27:04 $
 *
 *  Copyright 2006 Institute for Astronomy, University of Hawaii
@@ -62,5 +62,5 @@
 
     psPolynomial2D *local = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, 1, 1);
-    local->mask[1][1] = 1;
+    local->coeffMask[1][1] = PS_POLY_MASK_SET;
 
     // measure gradient for fractional chip regions
@@ -211,12 +211,10 @@
     for (int i = 0; i <= fpa->toTPA->x->nX; i++) {
         for (int j = 0; j <= fpa->toTPA->x->nY; j++) {
-            if (fpa->toTPA->x->mask[i][j]) {
-                if ((i > 0) && (i <= fpa->toTPA->x->nX)) {
-                    localX->mask[i-1][j] = 1;
-                }
-                if ((j > 0) && (j <= fpa->toTPA->x->nY)) {
-                    localY->mask[i][j-1] = 1;
-                }
-            }
+	    if ((i > 0) && (i <= fpa->toTPA->x->nX)) {
+		localX->coeffMask[i-1][j] = fpa->toTPA->x->coeffMask[i][j];
+	    }
+	    if ((j > 0) && (j <= fpa->toTPA->x->nY)) {
+		localY->coeffMask[i][j-1] = fpa->toTPA->x->coeffMask[i][j];
+	    }
         }
     }
@@ -240,18 +238,21 @@
     fpa->toTPA->x->coeff[0][0] = 0;
     for (int i = 1; i <= fpa->toTPA->x->nX; i++) {
-        if (!fpa->toTPA->x->mask[i][0]) {
-            fpa->toTPA->x->coeff[i][0] = localX->coeff[i-1][0] / i;
-        }
+        if (fpa->toTPA->x->coeffMask[i][0] & PS_POLY_MASK_SET) {
+	    continue;
+	}
+	fpa->toTPA->x->coeff[i][0] = localX->coeff[i-1][0] / i;
     }
     for (int j = 1; j <= fpa->toTPA->x->nY; j++) {
-        if (!fpa->toTPA->x->mask[0][j]) {
-            fpa->toTPA->x->coeff[0][j] = localY->coeff[0][j-1] / j;
-        }
+        if (fpa->toTPA->x->coeffMask[0][j] & PS_POLY_MASK_SET) {
+	    continue;
+	}
+	fpa->toTPA->x->coeff[0][j] = localY->coeff[0][j-1] / j;
     }
     for (int i = 1; i <= fpa->toTPA->x->nX; i++) {
         for (int j = 1; j <= fpa->toTPA->x->nY; j++) {
-            if (!fpa->toTPA->x->mask[i][j]) {
-                fpa->toTPA->x->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);
-            }
+            if (fpa->toTPA->x->coeffMask[i][j] & PS_POLY_MASK_SET) {
+		continue;
+	    }
+	    fpa->toTPA->x->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);
         }
     }
@@ -268,12 +269,10 @@
     for (int i = 0; i < fpa->toTPA->y->nX; i++) {
         for (int j = 0; j < fpa->toTPA->y->nY; j++) {
-            if (fpa->toTPA->y->mask[i][j]) {
-                if ((i > 0) && (i <= fpa->toTPA->y->nX)) {
-                    localX->mask[i-1][j] = 1;
-                }
-                if ((j > 0) && (j <= fpa->toTPA->y->nY)) {
-                    localY->mask[i][j-1] = 1;
-                }
-            }
+	    if ((i > 0) && (i <= fpa->toTPA->y->nX)) {
+		localX->coeffMask[i-1][j] = fpa->toTPA->y->coeffMask[i][j];
+	    }
+	    if ((j > 0) && (j <= fpa->toTPA->y->nY)) {
+		localY->coeffMask[i][j-1] = fpa->toTPA->y->coeffMask[i][j];
+	    }
         }
     }
@@ -286,18 +285,21 @@
     fpa->toTPA->y->coeff[0][0] = 0;
     for (int i = 1; i <= fpa->toTPA->y->nX; i++) {
-        if (!fpa->toTPA->y->mask[i][0]) {
-            fpa->toTPA->y->coeff[i][0] = localX->coeff[i-1][0] / i;
-        }
+        if (fpa->toTPA->y->coeffMask[i][0] & PS_POLY_MASK_SET) {
+	    continue;
+        }
+	fpa->toTPA->y->coeff[i][0] = localX->coeff[i-1][0] / i;
     }
     for (int j = 1; j <= fpa->toTPA->y->nY; j++) {
-        if (!fpa->toTPA->y->mask[0][j]) {
-            fpa->toTPA->y->coeff[0][j] = localY->coeff[0][j-1] / j;
-        }
+        if (fpa->toTPA->y->coeffMask[0][j] & PS_POLY_MASK_SET) {
+	    continue;
+        }
+	fpa->toTPA->y->coeff[0][j] = localY->coeff[0][j-1] / j;
     }
     for (int i = 1; i <= fpa->toTPA->y->nX; i++) {
         for (int j = 1; j <= fpa->toTPA->y->nY; j++) {
-            if (!fpa->toTPA->y->mask[i][j]) {
-                fpa->toTPA->y->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);
+            if (fpa->toTPA->y->coeffMask[i][j] & PS_POLY_MASK_SET) {
+		continue;
             }
+	    fpa->toTPA->y->coeff[i][j] = 0.5*(localX->coeff[i-1][j] / i + localY->coeff[i][j-1] / j);
         }
     }
Index: trunk/psModules/src/astrom/pmAstrometryUtils.c
===================================================================
--- trunk/psModules/src/astrom/pmAstrometryUtils.c	(revision 15102)
+++ trunk/psModules/src/astrom/pmAstrometryUtils.c	(revision 15254)
@@ -7,6 +7,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-03-30 21:12:56 $
+ *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-09 19:27:04 $
  *
  *  Copyright 2006 Institute for Astronomy, University of Hawaii
@@ -105,8 +105,8 @@
         psPolynomial2D *yPy = psPolynomial2DCopy (NULL, yPx);
         for (int j = 0; j <= input->x->nY; j++) {
-            output->x->mask[i][j] = input->x->mask[i][j];
-            output->y->mask[i][j] = input->y->mask[i][j];
-            output->x->coeff[i][j] = (output->x->mask[i][j]) ? 0 : psPolynomial2DEval (xPy, Xo, Yo) / tgamma(i+1) / tgamma(j+1);
-            output->y->coeff[i][j] = (output->y->mask[i][j]) ? 0 : psPolynomial2DEval (yPy, Xo, Yo) / tgamma(i+1) / tgamma(j+1);
+            output->x->coeffMask[i][j] = input->x->coeffMask[i][j];
+            output->y->coeffMask[i][j] = input->y->coeffMask[i][j];
+            output->x->coeff[i][j] = (output->x->coeffMask[i][j] & PS_POLY_MASK_SET) ? 0 : psPolynomial2DEval (xPy, Xo, Yo) / tgamma(i+1) / tgamma(j+1);
+            output->y->coeff[i][j] = (output->y->coeffMask[i][j] & PS_POLY_MASK_SET) ? 0 : psPolynomial2DEval (yPy, Xo, Yo) / tgamma(i+1) / tgamma(j+1);
 
             // take the next derivative wrt y, catch output (is NULL on last pass)
@@ -146,6 +146,6 @@
         for (int j = 0; j <= order; j++) {
             if (i + j > order) {
-                transform->x->mask [i][j] = 1;
-                transform->y->mask [i][j] = 1;
+                transform->x->coeffMask [i][j] = PS_POLY_MASK_SET;
+                transform->y->coeffMask [i][j] = PS_POLY_MASK_SET;
             }
         }
@@ -153,6 +153,6 @@
     transform->x->coeff[1][0] = 1;
     transform->y->coeff[0][1] = 1;
-    transform->x->mask[1][0] = 0;
-    transform->y->mask[0][1] = 0;
+    transform->x->coeffMask[1][0] = PS_POLY_MASK_NONE;
+    transform->y->coeffMask[0][1] = PS_POLY_MASK_NONE;
 
     return transform;
@@ -197,7 +197,7 @@
             if (i + j > order) {
                 // high-order cross terms must be masked (eg, x^3 y^2)
-                status &= transform->x->mask[i][j];
+                status &= (transform->x->coeffMask[i][j] & PS_POLY_MASK_SET);
             } else {
-                status &= !transform->x->mask[i][j];
+                status &= !(transform->x->coeffMask[i][j] & PS_POLY_MASK_SET);
                 if ((i == 1) && (i + j == 1)) {
                     // linear, diagonal terms must be non-zero
@@ -216,7 +216,7 @@
             if (i + j > order) {
                 // high-order cross terms must be masked (eg, x^3 y^2)
-                status &= transform->y->mask[i][j];
+                status &= (transform->y->coeffMask[i][j] & PS_POLY_MASK_SET);
             } else {
-                status &= !transform->y->mask[i][j];
+                status &= !(transform->y->coeffMask[i][j] & PS_POLY_MASK_SET);
                 if ((j == 1) && (i + j == 1)) {
                     // linear, diagonal terms must be 1.0
@@ -249,6 +249,6 @@
         for (int j = 0; j <= order; j++) {
             if (i + j > order) {
-                distort->x->mask [i][j][0][0] = 1;
-                distort->y->mask [i][j][0][0] = 1;
+                distort->x->coeffMask [i][j][0][0] = PS_POLY_MASK_SET;
+                distort->y->coeffMask [i][j][0][0] = PS_POLY_MASK_SET;
             }
         }
@@ -306,7 +306,7 @@
             if (i + j > order) {
                 // high-order cross terms must be masked (eg, x^3 y^2)
-                status &= distort->x->mask[i][j][0][0];
+                status &= (distort->x->coeffMask[i][j][0][0] & PS_POLY_MASK_SET);
             } else {
-                status &= !distort->x->mask[i][j][0][0];
+                status &= !(distort->x->coeffMask[i][j][0][0] & PS_POLY_MASK_SET);
                 if ((i == 1) && (i + j == 1)) {
                     // linear, diagonal terms must be 1.0
@@ -325,7 +325,7 @@
             if (i + j > order) {
                 // high-order cross terms must be masked (eg, x^3 y^2)
-                status &= distort->y->mask[i][j][0][0];
+                status &= (distort->y->coeffMask[i][j][0][0] & PS_POLY_MASK_SET);
             } else {
-                status &= !distort->y->mask[i][j][0][0];
+                status &= !(distort->y->coeffMask[i][j][0][0] & PS_POLY_MASK_SET);
                 if ((j == 1) && (i + j == 1)) {
                     // linear, diagonal terms must be 1.0
Index: trunk/psModules/src/astrom/pmAstrometryWCS.c
===================================================================
--- trunk/psModules/src/astrom/pmAstrometryWCS.c	(revision 15102)
+++ trunk/psModules/src/astrom/pmAstrometryWCS.c	(revision 15254)
@@ -7,6 +7,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.22 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-04-17 19:39:04 $
+ *  @version $Revision: 1.23 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-09 19:27:04 $
  *
  *  Copyright 2006 Institute for Astronomy, University of Hawaii
@@ -298,6 +298,6 @@
                         continue;
                     if (i + j > fitOrder) {
-                        wcs->trans->x->mask[i][j] = 1;
-                        wcs->trans->y->mask[i][j] = 1;
+                        wcs->trans->x->coeffMask[i][j] = PS_POLY_MASK_SET;
+                        wcs->trans->y->coeffMask[i][j] = PS_POLY_MASK_SET;
                         continue;
                     }
