Index: trunk/Ohana/src/opihi/dvo/avextract.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/avextract.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/avextract.c	(revision 16810)
@@ -100,5 +100,5 @@
 
     for (j = 0; (j < catalog.Naverage) && !interrupt; j++) {
-      m = catalog.average[j].offset;
+      m = catalog.average[j].measureOffset;
       // extract the relevant values
       // XXX for measure values, this could be optimized for one loop over measures...
Index: trunk/Ohana/src/opihi/dvo/ccd.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/ccd.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/ccd.c	(revision 16810)
@@ -72,5 +72,5 @@
     for (i = 0; i < catalog.Naverage; i++) {
       M1 = M2 = NULL;
-      m = catalog.average[i].offset;
+      m = catalog.average[i].measureOffset;
 
       SetSelectionParam (0);
Index: trunk/Ohana/src/opihi/dvo/cmd.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/cmd.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/cmd.c	(revision 16810)
@@ -70,5 +70,5 @@
     for (i = 0; i < catalog.Naverage; i++) {
       M1 = M3 = NULL;
-      m = catalog.average[i].offset;
+      m = catalog.average[i].measureOffset;
 
       SetSelectionParam (0);
Index: trunk/Ohana/src/opihi/dvo/dbExtractAverages.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/dbExtractAverages.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/dbExtractAverages.c	(revision 16810)
@@ -45,8 +45,8 @@
 
     case AVE_NMEAS:
-      value = average[0].Nm;
+      value = average[0].Nmeasure;
       break;
     case AVE_NMISS:
-      value = average[0].Nn;
+      value = average[0].Nmissing;
       break;
     case AVE_Xp:
@@ -72,5 +72,5 @@
 	  // XXX need to code this correctly: this returns just the first matching value
 	  value = NAN;
-	  for (i = 0; i < average[0].Nm; i++) {
+	  for (i = 0; i < average[0].Nmeasure; i++) {
 	    if (field->photcode->code != measure[i].photcode) continue;
 	    value = measure[i].M;
Index: trunk/Ohana/src/opihi/dvo/dbExtractMeasures.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/dbExtractMeasures.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/dbExtractMeasures.c	(revision 16810)
@@ -1,3 +1,8 @@
 # include "dvoshell.h"
+
+// to add a new field to the extractions:
+// 1) add the selection for the field below
+// 2) add the field to the ParseMeasureField in dbFields.c
+// 3) add the field to the measure enum list in dvoshell.h
 
 /* time concepts */
@@ -111,8 +116,8 @@
       break;
     case MEAS_NMEAS: /* OK */
-      value = average[0].Nm;
+      value = average[0].Nmeasure;
       break;
     case MEAS_NMISS: /* OK */
-      value = average[0].Nn;
+      value = average[0].Nmissing;
       break;
     case MEAS_OBJFLAGS: /* OK */
@@ -171,5 +176,5 @@
     case MEAS_XCCD: /* OK */
 /* I need to perform this conversion for ELIXIR and LONEOS formats on load */      
-# if 0
+# if 1
       value = measure[0].Xccd;
 # else
@@ -184,5 +189,5 @@
     case MEAS_YCCD: /* OK */
 /* I need to perform this conversion for ELIXIR and LONEOS formats on load */      
-# if 0
+# if 1
       value = measure[0].Yccd;
 # else
@@ -230,6 +235,6 @@
       value = measure[0].qPSF;
       break;
-    case MEAS_PSF_PROB: /* OK */
-      value = measure[0].psfProb;
+    case MEAS_PSF_CHISQ: /* OK */
+      value = measure[0].psfChisq;
       break;
     case MEAS_CR_NSIGMA: /* OK */
Index: trunk/Ohana/src/opihi/dvo/dbFields.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/dbFields.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/dbFields.c	(revision 16810)
@@ -148,5 +148,5 @@
   if (!strcasecmp (fieldName, "IMAGEID"))    ESCAPE (MEAS_IMAGE_ID,     MAG_NONE);
   if (!strcasecmp (fieldName, "PSF_QF"))     ESCAPE (MEAS_PSF_QF,     	MAG_NONE);
-  if (!strcasecmp (fieldName, "PSF_PROB"))   ESCAPE (MEAS_PSF_PROB,     MAG_NONE);
+  if (!strcasecmp (fieldName, "PSF_CHISQ"))  ESCAPE (MEAS_PSF_CHISQ,    MAG_NONE);
   if (!strcasecmp (fieldName, "CR_NSIGMA"))  ESCAPE (MEAS_CR_NSIGMA,    MAG_NONE);
   if (!strcasecmp (fieldName, "EXT_NSIGMA")) ESCAPE (MEAS_EXT_NSIGMA,   MAG_NONE);
Index: trunk/Ohana/src/opihi/dvo/fitcolors.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 16810)
@@ -216,5 +216,5 @@
 
 	  M1 = M2 = NULL;
-	  m = catalog[k].average[i].offset;
+	  m = catalog[k].average[i].measureOffset;
 
 	  SetSelectionParam (0);
Index: trunk/Ohana/src/opihi/dvo/fitsed.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/fitsed.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/fitsed.c	(revision 16810)
@@ -207,6 +207,6 @@
 
       // load the measurements for this source
-      m = catalog.average[i].offset;
-      for (j = 0; j < catalog.average[i].Nm; j++) {
+      m = catalog.average[i].measureOffset;
+      for (j = 0; j < catalog.average[i].Nmeasure; j++) {
 	idx = hashcode[catalog.measure[m+j].photcode];
 	if (idx == -1) continue;
Index: trunk/Ohana/src/opihi/dvo/gstar.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/gstar.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/gstar.c	(revision 16810)
@@ -151,5 +151,5 @@
 	gprint (GP_LOG, "%11.7f ", catalog.average[k].R);
 	gprint (GP_LOG, "%11.7f ", catalog.average[k].D);
-	gprint (GP_LOG, "%3d   ",  catalog.average[k].Nm);
+	gprint (GP_LOG, "%3d   ",  catalog.average[k].Nmeasure);
 	gprint (GP_LOG, "%4.1f ",  0.01*catalog.average[k].Xp);
 	gprint (GP_LOG, "%5d",     catalog.average[k].code);
@@ -164,6 +164,6 @@
 	    gprint (GP_LOG, "%f",     catalog.average[k].P);
 	    gprint (GP_LOG, "%f",     catalog.average[k].dP);
-	    gprint (GP_LOG, "%x",     catalog.average[k].objID_hi);
-	    gprint (GP_LOG, "%x",     catalog.average[k].objID_lo);
+	    gprint (GP_LOG, "%x",     catalog.average[k].objID);
+	    gprint (GP_LOG, "%x",     catalog.average[k].catID);
 	}
 
@@ -188,6 +188,6 @@
 
       if (GetMeasures || SaveVectors) {
-	m = catalog.average[k].offset;
-	for (j = 0; j < catalog.average[k].Nm; j++, m++) {
+	m = catalog.average[k].measureOffset;
+	for (j = 0; j < catalog.average[k].Nmeasure; j++, m++) {
 
 	  Mcat = PhotCat (&catalog.measure[m]);
@@ -209,5 +209,5 @@
 	    if (FULL_OUTPUT) {
 		gprint (GP_LOG, "%f", catalog.measure[m].Mcal);
-		gprint (GP_LOG, "%f", catalog.measure[m].Mgal);
+		gprint (GP_LOG, "%f", catalog.measure[m].Map);
 		gprint (GP_LOG, "%f", pow(10.0, 0.4*catalog.measure[m].dt));
 		gprint (GP_LOG, "%f", 1.0 + catalog.measure[m].airmass);
@@ -223,5 +223,5 @@
 		gprint (GP_LOG, "%d", catalog.measure[m].imageID);
 		gprint (GP_LOG, "%f", catalog.measure[m].qPSF);
-		gprint (GP_LOG, "%f", catalog.measure[m].psfProb);
+		gprint (GP_LOG, "%f", catalog.measure[m].psfChisq);
 		gprint (GP_LOG, "%f", catalog.measure[m].crNsigma);
 		gprint (GP_LOG, "%f", catalog.measure[m].extNsigma);
Index: trunk/Ohana/src/opihi/dvo/imextract.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/imextract.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/imextract.c	(revision 16810)
@@ -1,5 +1,7 @@
 # include "dvoshell.h"
 
-enum {ZERO, RA, DEC, Xm, AIRMASS, MCAL, dMCAL, PHOTCODE, TIME, FWHM, EXPTIME, NSTAR, SKY, NCAL, FLAG, NX_PIX, NY_PIX, THETA, SKEW, SCALE, DSCALE};
+// need to upgrade this to support multiple fields and WHERE clauses
+
+enum {ZERO, RA, DEC, Xm, AIRMASS, MCAL, dMCAL, PHOTCODE, TIME, FWHM, EXPTIME, NSTAR, SKY, NCAL, FLAG, NX_PIX, NY_PIX, THETA, SKEW, SCALE, DSCALE, IMAGE_ID};
 
 int imextract (int argc, char **argv) {
@@ -94,4 +96,5 @@
   if (!strcasecmp (argv[1], "scale")) mode = SCALE;
   if (!strcasecmp (argv[1], "dscale")) mode = DSCALE;
+  if (!strcasecmp (argv[1], "imageID")) mode = IMAGE_ID;
   if (mode == ZERO) {
     gprint (GP_ERR, "value may be one of the following:\n");
@@ -181,4 +184,7 @@
 	vec[0].elements[N] = image[j].NY;
 	break;
+      case IMAGE_ID:
+	vec[0].elements[N] = image[j].imageID;
+	break;
       case THETA: {
 	double theta1, theta2, s1, s2;
Index: trunk/Ohana/src/opihi/dvo/lcurve.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/lcurve.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/lcurve.c	(revision 16810)
@@ -122,6 +122,6 @@
     if (r < Radius2) {
       /* found star, extract measurements */
-      m = catalog.average[N1[i]].offset;
-      for (j = 0; j < catalog.average[N1[i]].Nm; j++, m++) {
+      m = catalog.average[N1[i]].measureOffset;
+      for (j = 0; j < catalog.average[N1[i]].Nmeasure; j++, m++) {
 	if (ErrorBars) dYvec.elements[N] = catalog.measure[m].dM;
 	Xvec.elements[N] = TimeValue (catalog.measure[m].t, TimeReference, TimeFormat);
Index: trunk/Ohana/src/opihi/dvo/lightcurve.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/lightcurve.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/lightcurve.c	(revision 16810)
@@ -105,6 +105,6 @@
       k = N1[i];
       /* found star, extract measurements */
-      m = catalog.average[k].offset;
-      for (j = 0; j < catalog.average[k].Nm; j++, m++) {
+      m = catalog.average[k].measureOffset;
+      for (j = 0; j < catalog.average[k].Nmeasure; j++, m++) {
 
 	if (PhotCodeSelect) {
Index: trunk/Ohana/src/opihi/dvo/mextract.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/mextract.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/mextract.c	(revision 16810)
@@ -120,6 +120,6 @@
 
     for (j = 0; (j < catalog.Naverage) && !interrupt; j++) {
-      m = catalog.average[j].offset;
-      for (k = 0; (k < catalog.average[j].Nm); k++, m++) {
+      m = catalog.average[j].measureOffset;
+      for (k = 0; (k < catalog.average[j].Nmeasure); k++, m++) {
 
 	// extract the relevant values for this measurement
Index: trunk/Ohana/src/opihi/dvo/photometry.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/photometry.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/photometry.c	(revision 16810)
@@ -562,5 +562,5 @@
   *nlist = 0; 
   Nlist = 0;
-  NLIST = MAX (1, average[0].Nm);
+  NLIST = MAX (1, average[0].Nmeasure);
   ALLOCATE (list, double, NLIST);
 
@@ -569,5 +569,5 @@
 
   /* look for measures */
-  for (i = 0; i < average[0].Nm; i++) {
+  for (i = 0; i < average[0].Nmeasure; i++) {
     TESTCODE (code, measure[i]);  /* skip measurements not matching photcode */
     TESTMEASURE (measure[i]);     /* exclusions based on measure.params  */
@@ -633,8 +633,8 @@
 
     case AVE_NMEAS:
-      value = average[0].Nm;
+      value = average[0].Nmeasure;
       break;
     case AVE_NMISS:
-      value = average[0].Nn;
+      value = average[0].Nmissing;
       break;
     case AVE_Xp:
@@ -658,5 +658,5 @@
 	case MAG_CAL:
 	  value = NAN;
-	  for (i = 0; i < average[0].Nm; i++) {
+	  for (i = 0; i < average[0].Nmeasure; i++) {
 	      if (code[0].code != measure[i].photcode) continue;
 	      value = measure[i].M;
@@ -679,5 +679,5 @@
     case AVE_NCODE:
       value = 0;
-      for (i = 0; i < average[0].Nm; i++) {
+      for (i = 0; i < average[0].Nmeasure; i++) {
 	if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue;
 	value ++;
@@ -686,5 +686,5 @@
     case AVE_NPHOT:
       value = 0;
-      for (i = 0; i < average[0].Nm; i++) {
+      for (i = 0; i < average[0].Nmeasure; i++) {
 	if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].photcode)) continue;
 	if (measure[i].dbFlags & (ID_MEAS_POOR | ID_MEAS_SKIP)) continue;
@@ -695,5 +695,5 @@
     case AVE_NCRIT:
       value = 0;
-      for (i = 0; i < average[0].Nm; i++) {
+      for (i = 0; i < average[0].Nmeasure; i++) {
 	if ((code != NULL) && (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].photcode))) continue;
 	if (ErrSelect && (measure[i].dM > ErrValue)) continue;
@@ -716,5 +716,5 @@
   
   Nt = Nc = 0;
-  for (k = 0; k < average[0].Nm; k++) {
+  for (k = 0; k < average[0].Nmeasure; k++) {
     if ((code != NULL) && (code[0].code != GetPhotcodeEquivCodebyCode (measure[k].photcode))) continue;
     Nc ++;
@@ -732,5 +732,5 @@
   
   Nt[0] = Nt[1] = Nt[2] = 0;
-  for (k = 0; k < average[0].Nm; k++) {
+  for (k = 0; k < average[0].Nmeasure; k++) {
     if (code != GetPhotcodeEquivCodebyCode (measure[k].photcode)) continue;
     N = GetMeasureTypeCode (&measure[k]);
@@ -793,5 +793,5 @@
   if ((code != NULL) && (code[0].type == PHOT_REF)) {
     Nm = 0;
-    for (i = 0; i < average[0].Nm; i++) {
+    for (i = 0; i < average[0].Nmeasure; i++) {
       TESTCODE (code, measure[i]);
       Nm++;
@@ -805,5 +805,5 @@
   if (FWHMSelect) {
     Nm = 0;
-    for (i = 0; i < average[0].Nm; i++) {
+    for (i = 0; i < average[0].Nmeasure; i++) {
       fwhm = measure[i].FWx / 100.0;
       switch (FWHMsign) {
@@ -820,5 +820,5 @@
       Nm++;
     }
-    if (average[0].Nm * FWHMfrac > Nm) return (FALSE);
+    if (average[0].Nmeasure * FWHMfrac > Nm) return (FALSE);
   }
 
@@ -833,5 +833,5 @@
   if (NcodeSelect) {
     Nm = 0;
-    for (i = 0; i < average[0].Nm; i++) {
+    for (i = 0; i < average[0].Nmeasure; i++) {
       TESTCODE (code, measure[i]);
       Nm++;
@@ -872,5 +872,5 @@
   if (NphotSelect) {
     Nm = 0;
-    for (i = 0; i < average[0].Nm; i++) {
+    for (i = 0; i < average[0].Nmeasure; i++) {
       TESTCODE (code, measure[i]);
       if (measure[i].dbFlags && ID_MEAS_SKIP) continue;
@@ -931,5 +931,5 @@
    Ns    - secfilt entry (-1 for PRI)
    &catalog.average[i], 
-   &catalog.measure[catalog.average[i].offset], 
+   &catalog.measure[catalog.average[i].measureOffset], 
    &catalog.secfilt[i*Nsec] 
 */
@@ -974,5 +974,5 @@
   *nlist = 0; 
   Nlist = 0;
-  NLIST = MAX (1, average[0].Nm*average[0].Nm);
+  NLIST = MAX (1, average[0].Nmeasure*average[0].Nmeasure);
   ALLOCATE (list, double, NLIST);
   M1 = M2 = NULL;
@@ -1015,5 +1015,5 @@
   *nlist = 0; 
   Nlist = 0;
-  NLIST = MAX (1, average[0].Nm*average[0].Nm);
+  NLIST = MAX (1, average[0].Nmeasure*average[0].Nmeasure);
   ALLOCATE (list, double, NLIST);
 
@@ -1031,10 +1031,10 @@
 
   /* loop twice over all measures */
-  for (i = 0; i < average[0].Nm; i++) {
+  for (i = 0; i < average[0].Nmeasure; i++) {
     SetSelectionParam (Np0);
     TESTCODE (code[0], measure[i]);
     TESTMEASURE (measure[i]);
     SETMAG(M1, measure[i], mode[0]);
-    for (j = 0; j < average[0].Nm; j++) {
+    for (j = 0; j < average[0].Nmeasure; j++) {
       if (i == j) continue;
       SetSelectionParam (Np1);
@@ -1086,5 +1086,5 @@
   *nlist = 0; 
   Nlist = 0;
-  NLIST = MAX (1, average[0].Nm*average[0].Nm);
+  NLIST = MAX (1, average[0].Nmeasure*average[0].Nmeasure);
   ALLOCATE (list, double, NLIST);
 
@@ -1099,9 +1099,9 @@
 
   /* loop twice over all measures */
-  for (i = 0; i < average[0].Nm; i++) {
+  for (i = 0; i < average[0].Nmeasure; i++) {
     TESTCODE (code[0], measure[i]);
     TESTMEASURE (measure[i]);
     SETMAG(M1, measure[i], mode[0]);
-    for (j = 0; j < average[0].Nm; j++) {
+    for (j = 0; j < average[0].Nmeasure; j++) {
       if (i == j) continue;
       TESTCODE (code[1], measure[j]);
Index: trunk/Ohana/src/opihi/dvo/pmeasure.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/pmeasure.c	(revision 16810)
@@ -111,6 +111,6 @@
       while (catalog.average[i].R < Rmin) catalog.average[i].R += 360.0;
       while (catalog.average[i].R > Rmax) catalog.average[i].R -= 360.0;
-      m = catalog.average[i].offset;
-      for (k = 0; k < catalog.average[i].Nm; k++) {
+      m = catalog.average[i].measureOffset;
+      for (k = 0; k < catalog.average[i].Nmeasure; k++) {
 	if (FlagClip) {
 	  flags = catalog.measure[m+k].dbFlags;
Index: trunk/Ohana/src/opihi/dvo/subpix.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/subpix.c	(revision 16631)
+++ trunk/Ohana/src/opihi/dvo/subpix.c	(revision 16810)
@@ -130,6 +130,6 @@
 
   /* only print the entries for existing measurements of this star */ 
-  measure = &catalog.measure[catalog.average[Nentry].offset];
-  Nmeasure = catalog.average[Nentry].Nm;
+  measure = &catalog.measure[catalog.average[Nentry].measureOffset];
+  Nmeasure = catalog.average[Nentry].Nmeasure;
   for (i = 0; i < Nsub; i++) {
     I = index[i];
Index: trunk/Ohana/src/opihi/include/dvoshell.h
===================================================================
--- trunk/Ohana/src/opihi/include/dvoshell.h	(revision 16631)
+++ trunk/Ohana/src/opihi/include/dvoshell.h	(revision 16810)
@@ -72,5 +72,5 @@
       MEAS_IMAGE_ID, 
       MEAS_PSF_QF, 
-      MEAS_PSF_PROB, 
+      MEAS_PSF_CHISQ, 
       MEAS_CR_NSIGMA, 
       MEAS_EXT_NSIGMA, 
Index: trunk/Ohana/src/opihi/pantasks/ipptool2book.c
===================================================================
--- trunk/Ohana/src/opihi/pantasks/ipptool2book.c	(revision 16631)
+++ trunk/Ohana/src/opihi/pantasks/ipptool2book.c	(revision 16810)
@@ -108,7 +108,4 @@
     FREEKEYS;
     return FALSE;
-  }
-  if (strcmp(bookName, argv[2])) {
-    gprint (GP_ERR, "WARNING: metadata output name %s does not match expected bookname %s\n", bookName, argv[2]);
   }
   free (line);
