Index: trunk/psModules/src/astrom/pmAstrometryDistortion.c
===================================================================
--- trunk/psModules/src/astrom/pmAstrometryDistortion.c	(revision 10825)
+++ trunk/psModules/src/astrom/pmAstrometryDistortion.c	(revision 10829)
@@ -7,6 +7,6 @@
 *  @author EAM, IfA
 *
-*  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2006-12-22 21:23:06 $
+*  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2006-12-25 01:49:49 $
 *
 *  Copyright 2006 Institute for Astronomy, University of Hawaii
@@ -50,9 +50,9 @@
 }
 
-psArray *pmAstromMeasureGradients(psArray *grads, psArray *rawstars, psArray *refstars, psArray *matches, psMetadata *config)
+psArray *pmAstromMeasureGradients(psArray *gradients, psArray *rawstars, psArray *refstars, psArray *matches, psMetadata *config)
 {
 
-    if (grads == NULL) {
-        grads = psArrayAllocEmpty (100);
+    if (gradients == NULL) {
+        gradients = psArrayAllocEmpty (100);
     }
 
@@ -141,11 +141,11 @@
             grad->dTPdM.y = local->coeff[0][1];
 
-            psArrayAdd (grads, 100, grad);
-        }
-    }
-    return grads;
+            psArrayAdd (gradients, 100, grad);
+        }
+    }
+    return gradients;
 }
 
-bool pmAstromFitDistortion(pmFPA *fpa, psArray *grads, psMetadata *config)
+bool pmAstromFitDistortion(pmFPA *fpa, psArray *gradients, psMetadata *config)
 {
 
@@ -154,14 +154,14 @@
 
     // assign the gradient elements to psVectors for fitting
-    psVector *dPdL = psVectorAlloc (grads->n, PS_TYPE_F32);
-    psVector *dQdL = psVectorAlloc (grads->n, PS_TYPE_F32);
-    psVector *dPdM = psVectorAlloc (grads->n, PS_TYPE_F32);
-    psVector *dQdM = psVectorAlloc (grads->n, PS_TYPE_F32);
-    psVector *L = psVectorAlloc (grads->n, PS_TYPE_F32);
-    psVector *M = psVectorAlloc (grads->n, PS_TYPE_F32);
-
-    for (int i = 0; i < grads->n; i++) {
-
-        pmAstromGradient *grad = grads->data[i];
+    psVector *dPdL = psVectorAlloc (gradients->n, PS_TYPE_F32);
+    psVector *dQdL = psVectorAlloc (gradients->n, PS_TYPE_F32);
+    psVector *dPdM = psVectorAlloc (gradients->n, PS_TYPE_F32);
+    psVector *dQdM = psVectorAlloc (gradients->n, PS_TYPE_F32);
+    psVector *L = psVectorAlloc (gradients->n, PS_TYPE_F32);
+    psVector *M = psVectorAlloc (gradients->n, PS_TYPE_F32);
+
+    for (int i = 0; i < gradients->n; i++) {
+
+        pmAstromGradient *grad = gradients->data[i];
 
         dPdL->data.F32[i] = grad->dTPdL.x;
@@ -176,5 +176,5 @@
 
     psStats *stats = psStatsAlloc (PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV);
-    psVector *mask = psVectorAlloc (grads->n, PS_TYPE_MASK);
+    psVector *mask = psVectorAlloc (gradients->n, PS_TYPE_MASK);
     psVectorInit (mask, 0);
 
@@ -185,9 +185,13 @@
 
     // set masks based on fpa->toTP
-    for (int i = 0; i < fpa->toTPA->x->nX; i++) {
-        for (int j = 0; j < fpa->toTPA->x->nY; j++) {
+    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]) {
-                localX->mask[i-1][j] = 1;
-                localY->mask[i][j-1] = 1;
+                if ((i > 0) && (i < fpa->toTPA->x->nX)) {
+                    localX->mask[i-1][j] = 1;
+                }
+                if ((j > 0) && (j < fpa->toTPA->y->nY)) {
+                    localY->mask[i][j-1] = 1;
+                }
             }
         }
@@ -247,5 +251,5 @@
     psVector *dQdMf = psPolynomial2DEvalVector (localY, L, M);
 
-    FILE *f = fopen ("grads.dat", "w");
+    FILE *f = fopen ("gradients.dat", "w");
     for (int i = 0; i < dPdLf->n; i++) {
         fprintf (f, "%f %f  | %f %f  %f %f | %f %f  %f %f\n",
@@ -290,4 +294,7 @@
     psFree (mask);
 
+    // XXX need to reset the fromFPA terms here
+
+
     return true;
 }
