Index: trunk/Ohana/src/dvolens/src/update_objects_catalog.c
===================================================================
--- trunk/Ohana/src/dvolens/src/update_objects_catalog.c	(revision 39107)
+++ trunk/Ohana/src/dvolens/src/update_objects_catalog.c	(revision 39108)
@@ -13,11 +13,11 @@
   int Nsecfilt = GetPhotcodeNsecfilt ();
   
-  float *Mxx_obj = NULL;
-  float *Mxy_obj = NULL;
-  float *Myy_obj = NULL;
-
-  ALLOCATE (Mxx_obj, float, Nsecfilt);
-  ALLOCATE (Mxy_obj, float, Nsecfilt);
-  ALLOCATE (Myy_obj, float, Nsecfilt);
+  ALLOCATE_PTR (Mxx_obj, float, Nsecfilt);
+  ALLOCATE_PTR (Mxy_obj, float, Nsecfilt);
+  ALLOCATE_PTR (Myy_obj, float, Nsecfilt);
+
+  ALLOCATE_PTR (N5, int, Nsecfilt);
+  ALLOCATE_PTR (N6, int, Nsecfilt);
+  ALLOCATE_PTR (N7, int, Nsecfilt);
 
   // I think we have already allocated lensobj
@@ -42,4 +42,8 @@
       Mxy_obj[j] = 0.0;
       Myy_obj[j] = 0.0;
+
+      N5[j] = 0;
+      N6[j] = 0;
+      N7[j] = 0;
     }
 
@@ -151,18 +155,29 @@
       // Fcal * lensing->F_ApR5 is in Jy
 
-      lensobj[Nsec]. F_ApR5 +=    Fcal * lensing-> F_ApR5;
-      lensobj[Nsec].dF_ApR5 += SQ(Fcal * lensing->dF_ApR5);
-      lensobj[Nsec].sF_ApR5 += SQ(Fcal * lensing->sF_ApR5);
-      lensobj[Nsec].fF_ApR5 +=           lensing->fF_ApR5;
-
-      lensobj[Nsec]. F_ApR6 +=    Fcal * lensing-> F_ApR6;
-      lensobj[Nsec].dF_ApR6 += SQ(Fcal * lensing->dF_ApR6);
-      lensobj[Nsec].sF_ApR6 += SQ(Fcal * lensing->sF_ApR6);
-      lensobj[Nsec].fF_ApR6 +=           lensing->fF_ApR6;
-
-      lensobj[Nsec]. F_ApR7 +=    Fcal * lensing-> F_ApR7;
-      lensobj[Nsec].dF_ApR7 += SQ(Fcal * lensing->dF_ApR7);
-      lensobj[Nsec].sF_ApR7 += SQ(Fcal * lensing->sF_ApR7);
-      lensobj[Nsec].fF_ApR7 +=           lensing->fF_ApR7;
+      if (isfinite(lensing-> F_ApR5)) {
+	lensobj[Nsec]. F_ApR5 +=    Fcal * lensing-> F_ApR5;
+	lensobj[Nsec].dF_ApR5 += SQ(Fcal * lensing->dF_ApR5);
+	lensobj[Nsec].sF_ApR5 += SQ(Fcal * lensing->sF_ApR5);
+	lensobj[Nsec].fF_ApR5 +=           lensing->fF_ApR5;
+	N5[Nsec] ++;
+      }
+
+      if (isfinite(lensing-> F_ApR6)) {
+	lensobj[Nsec]. F_ApR6 +=    Fcal * lensing-> F_ApR6;
+	lensobj[Nsec].dF_ApR6 += SQ(Fcal * lensing->dF_ApR6);
+	lensobj[Nsec].sF_ApR6 += SQ(Fcal * lensing->sF_ApR6);
+	lensobj[Nsec].fF_ApR6 +=           lensing->fF_ApR6;
+	N6[Nsec] ++;
+      }
+
+      if (isfinite(lensing-> F_ApR7)) {
+	lensobj[Nsec]. F_ApR7 +=    Fcal * lensing-> F_ApR7;
+	lensobj[Nsec].dF_ApR7 += SQ(Fcal * lensing->dF_ApR7);
+	lensobj[Nsec].sF_ApR7 += SQ(Fcal * lensing->sF_ApR7);
+	lensobj[Nsec].fF_ApR7 +=           lensing->fF_ApR7;
+	N7[Nsec] ++;
+	// fprintf (stderr, "%f %f %f %f\n", lensing-> F_ApR7, lensing->dF_ApR7, lensing->sF_ApR7, lensing->fF_ApR7);
+	// fprintf (stderr, "%f %f %f %f : %d\n", lensobj[Nsec].F_ApR7, lensobj[Nsec].dF_ApR7, lensobj[Nsec].sF_ApR7, lensobj[Nsec].fF_ApR7, N7[Nsec]);
+      }
 
       lensobj[Nsec].Nmeas   ++;
@@ -199,18 +214,39 @@
       lensobj[j]. E2_sh_psf /= Nmeas;
 
-      lensobj[j]. F_ApR5 /= Nmeas;
-      lensobj[j].dF_ApR5 /= Nmeas;
-      lensobj[j].sF_ApR5 /= Nmeas;
-      lensobj[j].fF_ApR5 /= Nmeas;
-
-      lensobj[j]. F_ApR6 /= Nmeas;
-      lensobj[j].dF_ApR6 /= Nmeas;
-      lensobj[j].sF_ApR6 /= Nmeas;
-      lensobj[j].fF_ApR6 /= Nmeas;
-
-      lensobj[j]. F_ApR7 /= Nmeas;
-      lensobj[j].dF_ApR7 /= Nmeas;
-      lensobj[j].sF_ApR7 /= Nmeas;
-      lensobj[j].fF_ApR7 /= Nmeas;
+      if (N5[j]) {
+	lensobj[j]. F_ApR5 /= (float) N5[j];
+	lensobj[j].dF_ApR5 /= (float) N5[j];
+	lensobj[j].sF_ApR5 /= (float) N5[j];
+	lensobj[j].fF_ApR5 /= (float) N5[j];
+      } else {
+	lensobj[j]. F_ApR5 = NAN;
+	lensobj[j].dF_ApR5 = NAN;
+	lensobj[j].sF_ApR5 = NAN;
+	lensobj[j].fF_ApR5 = NAN;
+      }
+
+      if (N6[j]) {
+	lensobj[j]. F_ApR6 /= (float) N6[j];
+	lensobj[j].dF_ApR6 /= (float) N6[j];
+	lensobj[j].sF_ApR6 /= (float) N6[j];
+	lensobj[j].fF_ApR6 /= (float) N6[j];
+      } else {
+	lensobj[j]. F_ApR6 = NAN;
+	lensobj[j].dF_ApR6 = NAN;
+	lensobj[j].sF_ApR6 = NAN;
+	lensobj[j].fF_ApR6 = NAN;
+      }
+
+      if (N7[j]) {
+	lensobj[j]. F_ApR7 /= (float) N7[j];
+	lensobj[j].dF_ApR7 /= (float) N7[j];
+	lensobj[j].sF_ApR7 /= (float) N7[j];
+	lensobj[j].fF_ApR7 /= (float) N7[j];
+      } else {
+	lensobj[j]. F_ApR7 = NAN;
+	lensobj[j].dF_ApR7 = NAN;
+	lensobj[j].sF_ApR7 = NAN;
+	lensobj[j].fF_ApR7 = NAN;
+      }
 
       lensobj[j].dF_ApR5 = sqrt(lensobj[j].dF_ApR5);
