Index: trunk/Ohana/src/opihi/dvo/photometry.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/photometry.c	(revision 2598)
+++ trunk/Ohana/src/opihi/dvo/photometry.c	(revision 3393)
@@ -268,10 +268,7 @@
   }
 
-  image = LoadImages (&Nimage);
-  if (Nimage == 0) {
-    return (FALSE);
-  }
+  if ((image = LoadImages (&Nimage)) == NULL) return (FALSE);
+  BuildChipMatch (image, Nimage);
   image_subset (image, Nimage, &subset, &Nsubset, graphsky, RegionSelect, tzero, (double) tend - tzero, TimeSelect);
-
   sort_image_subset (image, subset, Nsubset);
   return (TRUE);
@@ -282,4 +279,6 @@
   if (image != NULL) free (image);
   if (subset != NULL) free (subset);
+  image = NULL;
+  subset = NULL;
   return;
 }
@@ -487,4 +486,5 @@
 
     /* assign value */
+    value = 0;
     switch (param) {
     case MEAS_MAG: /* magnitudes are already determined above */
@@ -531,8 +531,6 @@
       dec = average[0].D - measure[i].dD / 360000.0;
       m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source);
-      if (m == -1) {
-	value = 0.0;
-	break;
-      }
+      if (m == -1) break;
+      if (!FindMosaicForImage (image, Nimage, m)) break;
       RD_to_XY (&x, &y, ra, dec, &image[m].coords);
       value = x;
@@ -542,8 +540,6 @@
       dec = average[0].D - measure[i].dD / 360000.0;
       m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source);
-      if (m == -1) {
-	value = 0.0;
-	break;
-      }
+      if (m == -1) break;
+      if (!FindMosaicForImage (image, Nimage, m)) break;
       RD_to_XY (&x, &y, ra, dec, &image[m].coords);
       value = y;
@@ -553,8 +549,8 @@
       dec = average[0].D - measure[i].dD / 360000.0;
       m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source);
-      if (m == -1) {
-	value = 0.0;
-	break;
-      }
+      if (m == -1) break;
+      /* this should use the mosaic assoicated with the image */
+      /* the solution here depends on image.coords having crref1,2 set to match the boresite center */
+      /* XXX set the mosaic.coords to have a unity WRP transformation in which x,y = ra,dec */
       mosaic.crval1 = image[m].coords.crval1;
       mosaic.crval2 = image[m].coords.crval2;
@@ -566,8 +562,6 @@
       dec = average[0].D - measure[i].dD / 360000.0;
       m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source);
-      if (m == -1) {
-	value = 0.0;
-	break;
-      }
+      if (m == -1) break;
+      /* same comments as above */
       mosaic.crval1 = image[m].coords.crval1;
       mosaic.crval2 = image[m].coords.crval2;
@@ -1008,9 +1002,8 @@
       TESTMEASURE (measure[j]);
       SETMAG(M2, measure[j], mode[1]);
-      if (use_first) 
-	n = i;
-      else 
-	n = j;
+      n = (use_first) ? i : j;
+
       /* assign value */
+      value = 0;
       switch (param) {
       case MEAS_MAG: /* magnitudes are already determined above */
@@ -1057,8 +1050,6 @@
       dec = average[0].D - measure[n].dD / 360000.0;
       m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source);
-      if (m == -1) {
-	value = 0.0;
-	break;
-      }
+      if (m == -1) break;
+      if (!FindMosaicForImage (image, Nimage, m)) break;
       RD_to_XY (&x, &y, ra, dec, &image[m].coords);
       value = x;
@@ -1068,8 +1059,6 @@
       dec = average[0].D - measure[n].dD / 360000.0;
       m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source);
-      if (m == -1) {
-	value = 0.0;
-	break;
-      }
+      if (m == -1) break;
+      if (!FindMosaicForImage (image, Nimage, m)) break;
       RD_to_XY (&x, &y, ra, dec, &image[m].coords);
       value = y;
@@ -1079,8 +1068,5 @@
       dec = average[0].D - measure[n].dD / 360000.0;
       m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source);
-      if (m == -1) {
-	value = 0.0;
-	break;
-      }
+      if (m == -1) break;
       mosaic.crval1 = image[m].coords.crval1;
       mosaic.crval2 = image[m].coords.crval2;
@@ -1092,8 +1078,5 @@
       dec = average[0].D - measure[n].dD / 360000.0;
       m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source);
-      if (m == -1) {
-	value = 0.0;
-	break;
-      }
+      if (m == -1) break;
       mosaic.crval1 = image[m].coords.crval1;
       mosaic.crval2 = image[m].coords.crval2;
