Index: trunk/Ohana/src/opihi/dvo/avmatch.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/avmatch.c	(revision 37049)
+++ trunk/Ohana/src/opihi/dvo/avmatch.c	(revision 37807)
@@ -149,11 +149,8 @@
   }
 
-  // check the requested fields : are all average/secfilt entries, or do we need measures?
-  int needMeasures = FALSE;
-  for (i = 0; !needMeasures && (i < Nfields); i++) {
-    if (fields[i].photcode == NULL) continue; // assert this?
-    if (fields[i].photcode[0].type == PHOT_REF) needMeasures = TRUE;
-    if (fields[i].photcode[0].type == PHOT_DEP) needMeasures = TRUE;
-  }
+  // check the requested fields
+  int needMeasure = dbFieldNeedMeasure (fields, Nfields);
+  int needLensobj = dbFieldNeedLensobj (fields, Nfields);
+  int needStarpar = dbFieldNeedStarpar (fields, Nfields, TRUE);
 
   /* create output storage vectors */
@@ -194,5 +191,7 @@
     catalog.filename = HOST_ID ? hostfile : skylist[0].filename[i];
     catalog.catflags = LOAD_AVES | LOAD_SECF;
-    catalog.catflags |= needMeasures ? LOAD_MEAS : SKIP_MEAS;
+    catalog.catflags |= needMeasure ? LOAD_MEAS    : SKIP_MEAS;
+    catalog.catflags |= needLensobj ? LOAD_LENSOBJ : SKIP_LENSOBJ;
+    catalog.catflags |= needStarpar ? LOAD_STARPAR : SKIP_STARPAR;
     catalog.Nsecfilt = 0;
 
@@ -219,10 +218,23 @@
       if (Ncat == -2) continue; // no matches to this point
 
-      m = catalog.average[Ncat].measureOffset;
+      m = Ncat;
+      Average *average = &catalog.average[m];
+
+      m = average->measureOffset;
+      Measure *measure = needMeasure ? &catalog.measure[m] : NULL;
+
+      m = average->lensobjOffset;
+      Lensobj *lensobj = needLensobj ? &catalog.lensobj[m] : NULL;
+
+      m = average->starparOffset;
+      StarPar *starpar = needStarpar ? &catalog.starpar[m] : NULL;
+
+      m = Ncat*Nsecfilt;
+      SecFilt *secfilt = &catalog.secfilt[m];
 
       // reset counters for saved fields, extract fields
       dbExtractAveragesInitAve (); 
       for (n = 0; n < Nfields; n++) {
-	values[n] = dbExtractAverages (&catalog.average[Ncat], &catalog.secfilt[Ncat*Nsecfilt], &catalog.measure[m], &fields[n]);
+	values[n] = dbExtractAverages (average, secfilt, measure, lensobj, starpar, &fields[n]);
       }
 
