Index: trunk/Ohana/src/libdvo/src/dbExtractAverages.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 39573)
+++ trunk/Ohana/src/libdvo/src/dbExtractAverages.c	(revision 39574)
@@ -223,5 +223,5 @@
 	    case MAG_LEVEL_INST:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotInst (&measure[n], field->magClass); 
@@ -231,5 +231,5 @@
 	    case MAG_LEVEL_CAT:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotCat (&measure[n], field->magClass); 
@@ -239,5 +239,5 @@
 	    case MAG_LEVEL_SYS:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotSys  (&measure[n], average, secfilt, field->magClass); 
@@ -247,5 +247,5 @@
 	    case MAG_LEVEL_REL:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotRel (&measure[n], average, secfilt, field->magClass); 
@@ -270,5 +270,5 @@
 	    case MAG_LEVEL_REL:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotErr (&measure[n], field->magClass); 
@@ -293,5 +293,5 @@
 	    case MAG_LEVEL_INST:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotFluxInst (&measure[n], field->magClass); 
@@ -301,5 +301,5 @@
 	    case MAG_LEVEL_CAT:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotFluxCat (&measure[n], field->magClass); 
@@ -309,5 +309,5 @@
 	    case MAG_LEVEL_SYS:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotFluxSys (&measure[n], average, secfilt, field->magClass); 
@@ -317,5 +317,5 @@
 	    case MAG_LEVEL_REL:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotFluxRel (&measure[n], average, secfilt, field->magClass); 
@@ -340,5 +340,5 @@
 	    case MAG_LEVEL_REL:
 	      // find an appropriate measure (if one exists)
-	      for (n = 0; n < average->Nmeasure; n++) {
+	      for (n = 0; measure && n < average->Nmeasure; n++) {
 		if (field->photcode->code != measure[n].photcode) continue;
 		value.Flt = PhotFluxInstErr (&measure[n], field->magClass); 
Index: trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 39573)
+++ trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 39574)
@@ -1915,11 +1915,17 @@
 /*** lensing *********************************************************************************/
 
+// lensobj points an Nsecfilt entries, if any exist.  note comment in dvolens/src/update_objects_catalog.c:32
+// >> Nlensobj tracks how many lensobj entries have I actually generated so far for this
+// >> catalog This is not necessarily 1-to-1 with secfilt entries, but any average entry
+// >> will either have 0 or Nsecfilt lensobj entries
+
 # define LENSFIELD(NAME) \
-  float LensValue_##NAME (PhotCode *code, Lensobj *lensobj) { \
-  if (code == NULL) return NAN; \
-  int Ns = photcodes->hashNsec[code->code]; \
-  float value = (Ns == -1) ? NAN : lensobj[Ns].NAME; \
-  return (value); \
-}
+  float LensValue_##NAME (PhotCode *code, Lensobj *lensobj) {	\
+    if (lensobj == NULL) return NAN;				\
+    if (code == NULL) return NAN;				\
+    int Ns = photcodes->hashNsec[code->code];			\
+    float value = (Ns == -1) ? NAN : lensobj[Ns].NAME;		\
+    return (value);						\
+  }
 
 LENSFIELD(X11_sm_obj)
Index: trunk/Ohana/src/opihi/dvo/avextract.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/avextract.c	(revision 39573)
+++ trunk/Ohana/src/opihi/dvo/avextract.c	(revision 39574)
@@ -212,14 +212,14 @@
 
       m = average->measureOffset;
-      Measure *measure = needMeasure ? &catalog.measure[m] : NULL;
+      Measure *measure = needMeasure && average->Nmeasure ? &catalog.measure[m] : NULL;
 
       m = average->lensobjOffset;
-      Lensobj *lensobj = needLensobj ? &catalog.lensobj[m] : NULL;
+      Lensobj *lensobj = needLensobj && average->Nlensobj ? &catalog.lensobj[m] : NULL;
 
       m = average->starparOffset;
-      StarPar *starpar = needStarpar ? &catalog.starpar[m] : NULL;
+      StarPar *starpar = needStarpar && average->Nstarpar ? &catalog.starpar[m] : NULL;
 
       m = average->galphotOffset;
-      GalPhot *galphot = needGalphot ? &catalog.galphot[m] : NULL;
+      GalPhot *galphot = needGalphot && average->Ngalphot ? &catalog.galphot[m] : NULL;
 
       m = j*Nsecfilt;
@@ -227,5 +227,7 @@
 
       for (n = 0; n < Nfields; n++) {
-	// we are passing in the *first* measure, but average->Nmeasure gives the count
+	// for Measure, we are passing in the *first* measure, but average->Nmeasure gives the count
+	// for Secfilt, we are passing in the first entry; photcode.equiv gives the entry
+	// for Lensobj, we are passing in the first entry or NULL; photcode.equiv gives the entry
 	values[n] = dbExtractAverages (average, secfilt, measure, lensobj, starpar, galphot, &fields[n]);
       }
