Index: trunk/Ohana/src/opihi/cmd.basic/list.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.basic/list.c	(revision 27586)
+++ trunk/Ohana/src/opihi/cmd.basic/list.c	(revision 27587)
@@ -74,4 +74,25 @@
     set_int_variable (line, nWords);
 
+    return (TRUE);
+  }
+
+  // return an error if -copy is given with no other args
+  if ((argc > 2) && (!strcmp (argv[2], "-copy"))) {
+    char *value;
+    if (argc == 3) {
+      gprint (GP_ERR, "USAGE: list (newlist) -copy (oldlist) ...\n");
+      return (FALSE);
+    }
+    
+    sprintf (line, "%s:n", argv[3]);
+    N = get_int_variable (line, &found);
+    sprintf (line, "%s:n", argv[1]);
+    set_int_variable (line, N);
+    for (i = 0; i < N; i++) {
+      sprintf (line, "%s:%d", argv[3], i);
+      value = get_variable (line);
+      sprintf (line, "%s:%d", argv[1], i);
+      set_str_variable (line, value);
+    }
     return (TRUE);
   }
Index: trunk/Ohana/src/opihi/dvo/avextract.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/avextract.c	(revision 27586)
+++ trunk/Ohana/src/opihi/dvo/avextract.c	(revision 27587)
@@ -185,4 +185,8 @@
     gprint (GP_ERR, "  RA : right ascension (J2000) [degrees]\n");
     gprint (GP_ERR, "  DEC : declination [degrees]\n");
+    gprint (GP_ERR, "  GLON : galactic longitude [degrees]\n");
+    gprint (GP_ERR, "  GLAT : galactic latitude [degrees]\n");
+    gprint (GP_ERR, "  ELON : ecliptic longitude [degrees]\n");
+    gprint (GP_ERR, "  ELAT : ecliptic latitude [degrees]\n");
     gprint (GP_ERR, "  dRA : ra scatter [degrees]\n");
     gprint (GP_ERR, "  dDEC : dec scatter [degrees]\n");
@@ -193,8 +197,26 @@
     gprint (GP_ERR, "  PAR : parallax\n");
     gprint (GP_ERR, "  dPAR : parallax error \n");
-    gprint (GP_ERR, "  nmeas : number of measurements\n");
-    gprint (GP_ERR, "  nmiss : number of non-detections\n");
-    gprint (GP_ERR, "  xp : positional raw chi-square\n");
-    gprint (GP_ERR, "  flag : object flags\n");
+
+    gprint (GP_ERR, "  ChiSqPos : chi square of position fit \n");
+    gprint (GP_ERR, "  ChiSqPM  : chi square of proper-motion fit \n");
+    gprint (GP_ERR, "  ChiSqPar : chi square of parallax fit \n");
+
+    gprint (GP_ERR, "  Tmean : mean epoch (reference for proper motion)\n");
+    gprint (GP_ERR, "  Trange : range of times used for proper motion/parallax fit\n");
+
+    gprint (GP_ERR, "  Nmeas : number of measurements\n");
+    gprint (GP_ERR, "  Nmiss : number of non-detections\n");
+    gprint (GP_ERR, "  Npos  : number of measurments used for astrometry\n");
+    gprint (GP_ERR, "  Nastrom  : number of measurments used for astrometry (= Npos)\n");
+
+    gprint (GP_ERR, "  flags     : object flags\n");
+    gprint (GP_ERR, "  objflags  : object flags\n");
+    gprint (GP_ERR, "  obj_flags : object flags\n");
+
+    gprint (GP_ERR, "  objID : object ID (32 bit, unique in catalog)\n");
+    gprint (GP_ERR, "  catID : catalog ID (32 bit)\n");
+    gprint (GP_ERR, "  extID_hi : external ID (upper 32 of 64 bit) -- eg, PSPS ID\n");
+    gprint (GP_ERR, "  extID_lo : external ID (lower 32 of 64 bit) -- eg, PSPS ID\n");
+
     gprint (GP_ERR, "  <photcode>:ave : average magnitude for <photcode>\n");
     gprint (GP_ERR, "  <photcode>:ref : reference magnitude system for <photcode>\n");
@@ -206,8 +228,10 @@
     gprint (GP_ERR, "  <photcode>:err : magnitude error for photcode\n");
     gprint (GP_ERR, "  <photcode>:chisq : raw chi-square of magnitude fit\n");
-    gprint (GP_ERR, "  type : dophot type (unused)\n");
-    gprint (GP_ERR, "  typefrac : dophot type fraction (unused)\n");
-    gprint (GP_ERR, "  <photcode>:ncode : number of measurements in photcode \n");
-    gprint (GP_ERR, "  <photcode>:nphot : number of measurements used for photcode average\n");
+    gprint (GP_ERR, "  <photcode>:ncode : number of measurements matching photcode \n");
+    gprint (GP_ERR, "  <photcode>:nphot : number of measurements used for average magnitude in this photcode\n");
+
+    // gprint (GP_ERR, "  Xp : NOT VALID\n");
+    // gprint (GP_ERR, "  type : dophot type (unused)\n");
+    // gprint (GP_ERR, "  typefrac : dophot type fraction (unused)\n");
     return (FALSE);
   }
Index: trunk/Ohana/src/opihi/dvo/dbExtractAverages.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/dbExtractAverages.c	(revision 27586)
+++ trunk/Ohana/src/opihi/dvo/dbExtractAverages.c	(revision 27587)
@@ -1,3 +1,7 @@
 # include "dvoshell.h"
+
+/* time concepts */
+static time_t TimeReference;
+static int TimeFormat;
 
 static CoordTransform *celestial_to_galactic = NULL;
@@ -34,4 +38,5 @@
 
 int dbExtractAveragesInit () {
+  GetTimeFormat (&TimeReference, &TimeFormat);
   haveGalactic = FALSE;
   haveEcliptic = FALSE;
@@ -118,8 +123,30 @@
       value.Int = average[0].Nmissing;
       break;
+    case AVE_NPOS:
+      value.Int = average[0].Npos;
+      break;
+
+    case AVE_CHISQ_POS:
+      value.Flt = average[0].ChiSqAve;
+      break;
+    case AVE_CHISQ_PM:
+      value.Flt = average[0].ChiSqPM;
+      break;
+    case AVE_CHISQ_PAR:
+      value.Flt = average[0].ChiSqPar;
+      break;
+
+    case AVE_TMEAN:
+      value.Flt = TimeValue (average[0].Tmean, TimeReference, TimeFormat);
+      break;
+    case AVE_TRANGE:
+      value.Flt = TimeValue (average[0].Trange, 0, TimeFormat);
+      break;
+
     case AVE_Xp:
       value.Flt = 0.01*average[0].Xp;
       break;
-    case AVE_FLAG:
+
+    case AVE_OBJ_FLAGS:
       value.Int = average[0].flags;
       break;
@@ -129,4 +156,10 @@
     case AVE_CATID:
       value.Int = average[0].catID;
+      break;
+    case AVE_EXTID_HI:
+      value.Int = (0x00000000FFFFFFFF & (average[0].extID >> 32));
+      break;
+    case AVE_EXTID_LO:
+      value.Int = (0x00000000FFFFFFFF & average[0].extID);
       break;
 
Index: trunk/Ohana/src/opihi/dvo/dbExtractImages.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/dbExtractImages.c	(revision 27586)
+++ trunk/Ohana/src/opihi/dvo/dbExtractImages.c	(revision 27587)
@@ -246,5 +246,5 @@
       value.Flt = image[N].Myyyy + 0x8000;
       break;
-    case IMAGE_FLAG:
+    case IMAGE_FLAGS:
       value.Int = image[N].flags;
       break;
Index: trunk/Ohana/src/opihi/dvo/dbExtractMeasures.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/dbExtractMeasures.c	(revision 27586)
+++ trunk/Ohana/src/opihi/dvo/dbExtractMeasures.c	(revision 27587)
@@ -10,6 +10,4 @@
 static int TimeFormat;
 
-static time_t TimeRefPM;
-
 static CoordTransform *celestial_to_galactic = NULL;
 static CoordTransform *celestial_to_ecliptic = NULL;
@@ -32,5 +30,4 @@
 
 int dbExtractMeasuresInit () {
-  TimeRefPM = ohana_date_to_sec ("2000/01/01");
   GetTimeFormat (&TimeReference, &TimeFormat);
   return (TRUE);
@@ -252,6 +249,18 @@
       value.Flt = average[0].D;
       break;
-    case MEAS_XP: /* OK */
-      value.Flt = average[0].Xp;
+    case MEAS_CHISQ_POS: /* OK */
+      value.Flt = average[0].ChiSqAve;
+      break;
+    case MEAS_CHISQ_PM: /* OK */
+      value.Flt = average[0].ChiSqPM;
+      break;
+    case MEAS_CHISQ_PAR: /* OK */
+      value.Flt = average[0].ChiSqPar;
+      break;
+    case MEAS_TMEAN: /* OK */
+      value.Flt = TimeValue (average[0].Tmean, TimeReference, TimeFormat);
+      break;
+    case MEAS_TRANGE: /* OK */
+      value.Flt = TimeValue (average[0].Trange, 0, TimeFormat);
       break;
     case MEAS_NMEAS: /* OK */
@@ -261,5 +270,8 @@
       value.Int = average[0].Nmissing;
       break;
-    case MEAS_OBJFLAGS: /* OK */
+    case MEAS_NPOS: /* OK */
+      value.Int = average[0].Npos;
+      break;
+    case MEAS_OBJ_FLAGS: /* OK */
       value.Int = average[0].flags;
       break;
@@ -273,9 +285,9 @@
       break;
     case MEAS_RA_FIT_OFFSET: /* OK */
-      dT = (measure[0].t - TimeRefPM) / (86400*365.25);
+      dT = (measure[0].t - average[0].Tmean) / (86400*365.25);
       value.Flt = average[0].uR * dT + measure[0].dR;
       break;
     case MEAS_DEC_FIT_OFFSET: /* OK */
-      dT = (measure[0].t - TimeRefPM) / (86400*365.25);
+      dT = (measure[0].t - average[0].Tmean) / (86400*365.25);
       value.Flt = average[0].uD * dT + measure[0].dD;
       break;
@@ -315,4 +327,13 @@
     case MEAS_THETA: /* OK */
       value.Flt = measure[0].theta;
+      break;
+    case MEAS_MXX: /* OK */
+      value.Flt = measure[0].Mxx;
+      break;
+    case MEAS_MXY: /* OK */
+      value.Flt = measure[0].Mxy;
+      break;
+    case MEAS_MYY: /* OK */
+      value.Flt = measure[0].Myy;
       break;
     case MEAS_DOPHOT: /* OK */
@@ -358,8 +379,8 @@
       break;
     case MEAS_XCCD_ERR: /* OK */
-      value.Flt = measure[0].dXccd;
+      value.Flt = measure[0].dXccd / 100.0;
       break;
     case MEAS_YCCD_ERR: /* OK */
-      value.Flt = measure[0].dYccd;
+      value.Flt = measure[0].dYccd / 100.0;
       break;
     case MEAS_XMOSAIC: /* OK */
@@ -404,4 +425,10 @@
       value.Flt = measure[0].psfChisq;
       break;
+    case MEAS_PSF_NDOF: /* OK */
+      value.Int = measure[0].psfNdof;
+      break;
+    case MEAS_PSF_NPIX: /* OK */
+      value.Int = measure[0].psfNpix;
+      break;
     case MEAS_CR_NSIGMA: /* OK */
       value.Flt = measure[0].crNsigma;
Index: trunk/Ohana/src/opihi/dvo/dbFields.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/dbFields.c	(revision 27586)
+++ trunk/Ohana/src/opihi/dvo/dbFields.c	(revision 27587)
@@ -159,8 +159,18 @@
   if (!strcasecmp (fieldName, "dR:ERR"))     	 ESCAPE (MEAS_RA_OFFSET_ERR,  MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "dD:ERR"))     	 ESCAPE (MEAS_DEC_OFFSET_ERR, MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "xp"))         	 ESCAPE (MEAS_XP,             MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "ChiSqPos"))       ESCAPE (MEAS_CHISQ_POS,      MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "ChiSqPM"))        ESCAPE (MEAS_CHISQ_PM,       MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "ChiSqPar"))       ESCAPE (MEAS_CHISQ_PAR,      MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "Tmean"))          ESCAPE (MEAS_TMEAN,          MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "Trange"))         ESCAPE (MEAS_TRANGE,         MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "nmeas"))      	 ESCAPE (MEAS_NMEAS,          MAG_NONE, OPIHI_INT);
   if (!strcasecmp (fieldName, "nmiss"))      	 ESCAPE (MEAS_NMISS,          MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "objflags"))   	 ESCAPE (MEAS_OBJFLAGS,       MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "npos"))      	 ESCAPE (MEAS_NPOS,           MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "OBJFLAGS"))   	 ESCAPE (MEAS_OBJ_FLAGS,      MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "OBJ_FLAGS"))   	 ESCAPE (MEAS_OBJ_FLAGS,      MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "DB_FLAGS"))   	 ESCAPE (MEAS_DB_FLAGS,       MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "PHOT_FLAGS")) 	 ESCAPE (MEAS_PHOT_FLAGS,     MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "DBFLAGS"))   	 ESCAPE (MEAS_DB_FLAGS,       MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "PHOTFLAGS")) 	 ESCAPE (MEAS_PHOT_FLAGS,     MAG_NONE, OPIHI_INT);
   if (!strcasecmp (fieldName, "AIRMASS"))    	 ESCAPE (MEAS_AIRMASS,        MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "ALT"))        	 ESCAPE (MEAS_ALT,            MAG_NONE, OPIHI_FLT);
@@ -174,7 +184,10 @@
   if (!strcasecmp (fieldName, "FWHM_MIN"))   	 ESCAPE (MEAS_FWHM_MIN,       MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "THETA"))      	 ESCAPE (MEAS_THETA,          MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "POSANGLE"))     	 ESCAPE (MEAS_POSANGLE,       MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "PLATESCALE"))   	 ESCAPE (MEAS_PLATESCALE,     MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "MXX"))       	 ESCAPE (MEAS_MXX,            MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "MYY"))       	 ESCAPE (MEAS_MYY,            MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "MXY"))       	 ESCAPE (MEAS_MXY,            MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "DOPHOT"))     	 ESCAPE (MEAS_DOPHOT,         MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "DB_FLAGS"))   	 ESCAPE (MEAS_DB_FLAGS,       MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "PHOT_FLAGS")) 	 ESCAPE (MEAS_PHOT_FLAGS,     MAG_NONE, OPIHI_INT);
   if (!strcasecmp (fieldName, "XCCD"))       	 ESCAPE (MEAS_XCCD,           MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "YCCD"))       	 ESCAPE (MEAS_YCCD,           MAG_NONE, OPIHI_FLT);
@@ -193,4 +206,6 @@
   if (!strcasecmp (fieldName, "PSF_QF"))     	 ESCAPE (MEAS_PSF_QF,         MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "PSF_CHISQ"))  	 ESCAPE (MEAS_PSF_CHISQ,      MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "PSF_NDOF"))  	 ESCAPE (MEAS_PSF_NDOF,       MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "PSF_NPIX"))  	 ESCAPE (MEAS_PSF_NPIX,       MAG_NONE, OPIHI_INT);
   if (!strcasecmp (fieldName, "CR_NSIGMA"))  	 ESCAPE (MEAS_CR_NSIGMA,      MAG_NONE, OPIHI_FLT);
   if (!strcasecmp (fieldName, "EXT_NSIGMA")) 	 ESCAPE (MEAS_EXT_NSIGMA,     MAG_NONE, OPIHI_FLT);
@@ -253,26 +268,37 @@
   }
 
-  if (!strcasecmp (fieldName, "RA"))    ESCAPE (AVE_RA,        MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "DEC"))   ESCAPE (AVE_DEC,       MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GLON"))  ESCAPE (AVE_GLON,      MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "GLAT"))  ESCAPE (AVE_GLAT,      MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "ELON"))  ESCAPE (AVE_ELON,      MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "ELAT"))  ESCAPE (AVE_ELAT,      MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "dRA"))   ESCAPE (AVE_RA_ERR,    MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "dDEC"))  ESCAPE (AVE_DEC_ERR,   MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "uRA"))   ESCAPE (AVE_U_RA,      MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "uDEC"))  ESCAPE (AVE_U_DEC,     MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "duRA"))  ESCAPE (AVE_U_RA_ERR,  MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "duDEC")) ESCAPE (AVE_U_DEC_ERR, MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "PAR"))   ESCAPE (AVE_PAR,       MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "dPAR"))  ESCAPE (AVE_PAR_ERR,   MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "Xp"))    ESCAPE (AVE_Xp,        MAG_NONE, OPIHI_FLT);
-  if (!strcasecmp (fieldName, "NMEAS")) ESCAPE (AVE_NMEAS,     MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "NMISS")) ESCAPE (AVE_NMISS,     MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "FLAG"))  ESCAPE (AVE_FLAG,      MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "TYPE"))  ESCAPE (AVE_TYPE,      MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "OBJID")) ESCAPE (AVE_OBJID,     MAG_NONE, OPIHI_INT);
-  if (!strcasecmp (fieldName, "CATID")) ESCAPE (AVE_CATID,     MAG_NONE, OPIHI_INT);
-
+  if (!strcasecmp (fieldName, "RA"))        ESCAPE (AVE_RA,        MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "DEC"))       ESCAPE (AVE_DEC,       MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "GLON"))      ESCAPE (AVE_GLON,      MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "GLAT"))      ESCAPE (AVE_GLAT,      MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "ELON"))      ESCAPE (AVE_ELON,      MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "ELAT"))      ESCAPE (AVE_ELAT,      MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "dRA"))       ESCAPE (AVE_RA_ERR,    MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "dDEC"))      ESCAPE (AVE_DEC_ERR,   MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "uRA"))       ESCAPE (AVE_U_RA,      MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "uDEC"))      ESCAPE (AVE_U_DEC,     MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "duRA"))      ESCAPE (AVE_U_RA_ERR,  MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "duDEC"))     ESCAPE (AVE_U_DEC_ERR, MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "PAR"))       ESCAPE (AVE_PAR,       MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "dPAR"))      ESCAPE (AVE_PAR_ERR,   MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "ChiSqPos"))  ESCAPE (AVE_CHISQ_POS, MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "ChiSqPM"))   ESCAPE (AVE_CHISQ_PM, MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "ChiSqPar"))  ESCAPE (AVE_CHISQ_PAR, MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "Tmean"))     ESCAPE (AVE_TMEAN,     MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "Trange"))    ESCAPE (AVE_TRANGE,    MAG_NONE, OPIHI_FLT);
+  if (!strcasecmp (fieldName, "NMEAS"))     ESCAPE (AVE_NMEAS,     MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "NMISS"))     ESCAPE (AVE_NMISS,     MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "NPOS"))      ESCAPE (AVE_NPOS,      MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "NASTROM"))   ESCAPE (AVE_NPOS,      MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "FLAGS"))     ESCAPE (AVE_OBJ_FLAGS, MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "OBJ_FLAGS")) ESCAPE (AVE_OBJ_FLAGS, MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "OBJFLAGS"))  ESCAPE (AVE_OBJ_FLAGS, MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "OBJID"))     ESCAPE (AVE_OBJID,     MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "CATID"))     ESCAPE (AVE_CATID,     MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "EXTID_HI"))  ESCAPE (AVE_EXTID_HI,  MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "EXTID_LO"))  ESCAPE (AVE_EXTID_LO,  MAG_NONE, OPIHI_INT);
+
+  // if (!strcasecmp (fieldName, "Xp"))      ESCAPE (AVE_Xp,        MAG_NONE, OPIHI_FLT);
+  // if (!strcasecmp (fieldName, "TYPE"))    ESCAPE (AVE_TYPE,      MAG_NONE, OPIHI_INT);
   // for words that don't parse, try a photcode
 
@@ -375,5 +401,6 @@
   if (!strcasecmp (fieldName, "sky"      )) ESCAPE (IMAGE_SKY,       MAG_NONE, OPIHI_FLT);
 
-  if (!strcasecmp (fieldName, "flag"     )) ESCAPE (IMAGE_FLAG,      MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "imflags"  )) ESCAPE (IMAGE_FLAGS,     MAG_NONE, OPIHI_INT);
+  if (!strcasecmp (fieldName, "flags"    )) ESCAPE (IMAGE_FLAGS,     MAG_NONE, OPIHI_INT);
   if (!strcasecmp (fieldName, "ccdnum"   )) ESCAPE (IMAGE_CCDNUM,    MAG_NONE, OPIHI_INT);
 
Index: trunk/Ohana/src/opihi/dvo/imextract.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/imextract.c	(revision 27586)
+++ trunk/Ohana/src/opihi/dvo/imextract.c	(revision 27587)
@@ -201,5 +201,6 @@
     gprint (GP_ERR, "  sky : mean background flux\n");
 
-    gprint (GP_ERR, "  flag : processing bit flags\n");
+    gprint (GP_ERR, "  imflags : processing bit flags\n");
+    gprint (GP_ERR, "  flags : processing bit flags\n");
     gprint (GP_ERR, "  ccdnum : identifier for CCD\n");
 
Index: trunk/Ohana/src/opihi/dvo/mextract.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/mextract.c	(revision 27586)
+++ trunk/Ohana/src/opihi/dvo/mextract.c	(revision 27587)
@@ -209,4 +209,12 @@
     gprint (GP_ERR, "  RA:err : ra scatter [degrees] \n");
     gprint (GP_ERR, "  DEC:err : dec scatter [degrees]\n");
+    gprint (GP_ERR, "  GLON : galactic longitude [degrees]\n");
+    gprint (GP_ERR, "  GLAT : galactic latitude [degrees]\n");
+    gprint (GP_ERR, "  GLON:ave : average galactic longitude [degrees]\n");
+    gprint (GP_ERR, "  GLAT:ave : average galactic latitude [degrees]\n");
+    gprint (GP_ERR, "  ELON : ecliptic longitude [degrees]\n");
+    gprint (GP_ERR, "  ELAT : ecliptic latitude [degrees]\n");
+    gprint (GP_ERR, "  ELON:ave : average ecliptic longitude [degrees]\n");
+    gprint (GP_ERR, "  ELAT:ave : average ecliptic latitude [degrees]\n");
     gprint (GP_ERR, "  uRA : proper motion in ra [mas/yr]\n");
     gprint (GP_ERR, "  uDEC : proper motion in dec [mas/yr]\n");
@@ -215,8 +223,32 @@
     gprint (GP_ERR, "  PAR : parallax\n");
     gprint (GP_ERR, "  dPAR : parallax error \n");
-    gprint (GP_ERR, "  nmeas : number of measurements\n");
-    gprint (GP_ERR, "  nmiss : number of non-detections\n");
-    gprint (GP_ERR, "  xp : positional raw chi-square\n");
-    gprint (GP_ERR, "  objflag : object flags\n");
+
+    gprint (GP_ERR, "  dR : ra offset [arcseconds]\n");
+    gprint (GP_ERR, "  dD : dec offset [arcseconds]\n");
+    gprint (GP_ERR, "  dR:fit : ra offset from fit [arcseconds]\n");
+    gprint (GP_ERR, "  dD:fit : dec offset from fit [arcseconds]\n");
+    gprint (GP_ERR, "  dR:err : ra offset error [arcseconds]\n");
+    gprint (GP_ERR, "  dD:err : dec offset error [arcseconds]\n");
+
+    gprint (GP_ERR, "  ChiSqPos : chi square of position fit \n");
+    gprint (GP_ERR, "  ChiSqPM  : chi square of proper-motion fit \n");
+    gprint (GP_ERR, "  ChiSqPar : chi square of parallax fit \n");
+
+    gprint (GP_ERR, "  Tmean : mean epoch (reference for proper motion)\n");
+    gprint (GP_ERR, "  Trange : range of times used for proper motion/parallax fit\n");
+
+
+    gprint (GP_ERR, "  Nmeas : number of measurements\n");
+    gprint (GP_ERR, "  Nmiss : number of non-detections\n");
+    gprint (GP_ERR, "  Npos  : number of measurments used for astrometry\n");
+
+    gprint (GP_ERR, "  objflags  : object flags\n");
+    gprint (GP_ERR, "  photflags : detection flags from image analysis\n");
+    gprint (GP_ERR, "  dbflags : detection flags from database analysis\n");
+
+    gprint (GP_ERR, "  obj_flags : object flags\n");
+    gprint (GP_ERR, "  phot_flags : detection flags from image analysis\n");
+    gprint (GP_ERR, "  db_flags : detection flags from database analysis\n");
+
     gprint (GP_ERR, "  <photcode>:ave : average magnitude for photcode (or equivalent)\n");
     gprint (GP_ERR, "  <photcode>:ref : reference magnitude system for photcode (or equivalent)\n");
@@ -227,4 +259,6 @@
     gprint (GP_ERR, "  <photcode>:cal :  calibrated magnitude for photcode \n");
     gprint (GP_ERR, "  <photcode>:err :  magnitude error for measurement\n");
+    gprint (GP_ERR, "  <photcode>:ap :  catalog aperture magnitude for photcode\n");
+    gprint (GP_ERR, "  <photcode>:aper :  catalog aperture magnitude for photcode\n");
     gprint (GP_ERR, "  <photcode>:aveerr : average error (stdev)\n");
     gprint (GP_ERR, "  <photcode>:chisq : raw chi-square of magnitude fit\n");
@@ -232,22 +266,44 @@
     gprint (GP_ERR, "  <photcode>:nphot : number of measurements used for average magnitude\n");
     gprint (GP_ERR, "  airmass : airmass of detection\n");
+    gprint (GP_ERR, "  alt : altitude of detection\n");
+    gprint (GP_ERR, "  az  : azimuth of detection\n");
     gprint (GP_ERR, "  exptime : exposure time [s]\n");
     gprint (GP_ERR, "  photcode : photcode \n");
+    gprint (GP_ERR, "  photcode:equiv : equivalent average photcode \n");
     gprint (GP_ERR, "  time : time of exposure [Seconds since Jan 1, 1970/\n");
-    gprint (GP_ERR, "  dR : ra offset [arcseconds]\n");
-    gprint (GP_ERR, "  dD : dec offset [arcseconds]\n");
-    gprint (GP_ERR, "  fwhm : fwhm (average) [pixels]\n");
-    gprint (GP_ERR, "  fwhm_maj : fwhm (major axis) [pixels]\n");
-    gprint (GP_ERR, "  fwhm_min : fwhm (minor axis) [pixels]\n");
-    gprint (GP_ERR, "  theta : position angle\n");
-    gprint (GP_ERR, "  flags : detection flags\n");
+    gprint (GP_ERR, "  fwhm : fwhm (average) of fitted PSF [pixels]\n");
+    gprint (GP_ERR, "  fwhm_maj : fwhm (major axis) of fitted PSF [pixels]\n");
+    gprint (GP_ERR, "  fwhm_min : fwhm (minor axis) of fitted PSF [pixels]\n");
+    gprint (GP_ERR, "  theta : position angle of fitted PSF\n");
+    gprint (GP_ERR, "  posangle : position angle of detector at measurement [degrees]\n");
+    gprint (GP_ERR, "  platescale : plate scale of detector at measurement [arcsec/pixel] \n");
+
+    gprint (GP_ERR, "  psf_qf : PSF quality factor (psf-weighted mask fraction)\n");
+    gprint (GP_ERR, "  psf_chisq : PSF fit chi square\n");
+    gprint (GP_ERR, "  psf_ndof : PSF number of degrees of freedom\n");
+    gprint (GP_ERR, "  psf_npix : PSF number of pixels\n");
+
+    gprint (GP_ERR, "  cr_nsigma : Nsigma deviation towards cosmic ray\n");
+    gprint (GP_ERR, "  ext_nsigma : Nsigma deviation towards extended source\n");
+
+    gprint (GP_ERR, "  Mxx : second moment in X [pixels^2]\n");
+    gprint (GP_ERR, "  Mxy : second moment cross term [pixels^2]\n");
+    gprint (GP_ERR, "  Myy : second moment in Y [pixels^2]\n");
+
     gprint (GP_ERR, "  xccd : ccd x position\n");
     gprint (GP_ERR, "  yccd : ccd y position\n");
+    gprint (GP_ERR, "  xccd:err : ccd x position error\n");
+    gprint (GP_ERR, "  yccd:err : ccd y position error\n");
     gprint (GP_ERR, "  xmosaic : mosaic x position\n");
     gprint (GP_ERR, "  ymosaic : mosaic y position\n");
-    gprint (GP_ERR, "  xchip : chip x position\n");
-    gprint (GP_ERR, "  ychip : chip y position\n");
-    gprint (GP_ERR, "  xfpa : fpa x position\n");
-    gprint (GP_ERR, "  yfpa : fpa y position\n");
+    gprint (GP_ERR, "  xchip : chip x position (= ccd position)\n");
+    gprint (GP_ERR, "  ychip : chip y position (= ccd position)\n");
+    gprint (GP_ERR, "  xfpa : fpa x position (= mosaic position)\n");
+    gprint (GP_ERR, "  yfpa : fpa y position (= mosaic position)\n");
+
+    gprint (GP_ERR, "  detID : ID of detection (unique on source image)\n");
+    gprint (GP_ERR, "  objID : object ID (32 bit, unique in catalog)\n");
+    gprint (GP_ERR, "  catID : catalog ID (32 bit)\n");
+    gprint (GP_ERR, "  imageID : ID of source image (32 bit)\n");
     return (FALSE);
   }
Index: trunk/Ohana/src/opihi/dvo/photometry.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/photometry.c	(revision 27586)
+++ trunk/Ohana/src/opihi/dvo/photometry.c	(revision 27587)
@@ -228,5 +228,5 @@
   if (!strcasecmp (parname, "Xp"))    param = AVE_Xp;
   if (!strcasecmp (parname, "Xm"))    param = AVE_Xm;
-  if (!strcasecmp (parname, "flag"))  param = AVE_FLAG;
+  if (!strcasecmp (parname, "flag"))  param = AVE_OBJ_FLAGS;
   if (!strcasecmp (parname, "type"))  param = AVE_TYPE;
   if (!strcasecmp (parname, "typefrac")) {
@@ -641,5 +641,5 @@
       value = 0.01*average[0].Xp;
       break;
-    case AVE_FLAG:
+    case AVE_OBJ_FLAGS:
       value = average[0].flags;
       break;
Index: trunk/Ohana/src/opihi/include/dvoshell.h
===================================================================
--- trunk/Ohana/src/opihi/include/dvoshell.h	(revision 27586)
+++ trunk/Ohana/src/opihi/include/dvoshell.h	(revision 27587)
@@ -69,8 +69,13 @@
       MEAS_RA_OFFSET_ERR, 
       MEAS_DEC_OFFSET_ERR, 
-      MEAS_XP, 
+      MEAS_CHISQ_POS, 
+      MEAS_CHISQ_PM,  
+      MEAS_CHISQ_PAR, 
+      MEAS_TMEAN, 
+      MEAS_TRANGE, 
       MEAS_NMEAS, 
       MEAS_NMISS, 
-      MEAS_OBJFLAGS, 
+      MEAS_NPOS, 
+      MEAS_OBJ_FLAGS, 
       MEAS_MAG, 
       MEAS_MINST, 
@@ -90,4 +95,9 @@
       MEAS_FWHM_MIN, 
       MEAS_THETA, 
+      MEAS_POSANGLE, 
+      MEAS_PLATESCALE, 
+      MEAS_MXX, 
+      MEAS_MXY, 
+      MEAS_MYY, 
       MEAS_DOPHOT, 
       MEAS_DB_FLAGS, 
@@ -107,4 +117,6 @@
       MEAS_PSF_QF, 
       MEAS_PSF_CHISQ, 
+      MEAS_PSF_NDOF,
+      MEAS_PSF_NPIX,
       MEAS_CR_NSIGMA, 
       MEAS_EXT_NSIGMA, 
@@ -127,7 +139,13 @@
       AVE_PAR, 
       AVE_PAR_ERR, 
+      AVE_CHISQ_POS, 
+      AVE_CHISQ_PM, 
+      AVE_CHISQ_PAR, 
+      AVE_TMEAN,
+      AVE_TRANGE, 
       AVE_Xp, 
       AVE_NMEAS, 
       AVE_NMISS, 
+      AVE_NPOS, 
       AVE_NPHOT, 
       AVE_NCODE, 
@@ -135,9 +153,11 @@
       AVE_dMAG, 
       AVE_Xm, 
-      AVE_FLAG, 
+      AVE_OBJ_FLAGS, 
       AVE_TYPE, 
       AVE_TYPEFRAC,
       AVE_OBJID,
-      AVE_CATID
+      AVE_CATID,
+      AVE_EXTID_HI,
+      AVE_EXTID_LO,
 };
 
@@ -160,5 +180,5 @@
       IMAGE_NCAL, 
       IMAGE_SKY, 
-      IMAGE_FLAG, 
+      IMAGE_FLAGS, 
       IMAGE_CCDNUM, 
       IMAGE_NX_PIX, 
Index: trunk/Ohana/src/opihi/lib.shell/ListOps.c
===================================================================
--- trunk/Ohana/src/opihi/lib.shell/ListOps.c	(revision 27586)
+++ trunk/Ohana/src/opihi/lib.shell/ListOps.c	(revision 27587)
@@ -190,4 +190,5 @@
       if (!strcmp (temp, "-split")) goto escape;
       if (!strcmp (temp, "-splitbychar")) goto escape;
+      if (!strcmp (temp, "-copy")) goto escape;
       if (!strcmp (temp, "-add")) goto escape;
       if (!strcmp (temp, "-del")) goto escape;
