Index: trunk/Ohana/src/dvolens/src/args.c
===================================================================
--- trunk/Ohana/src/dvolens/src/args.c	(revision 39536)
+++ trunk/Ohana/src/dvolens/src/args.c	(revision 39537)
@@ -158,4 +158,12 @@
   }
 
+  /* specify region file by name (eg n0000/0000.00) */
+  UserCatalog = NULL;
+  if ((N = get_argument (argc, argv, "-catalog"))) {
+    remove_argument (N, &argc, argv);
+    UserCatalog = strcreate (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+
   VERBOSE = VERBOSE2 = FALSE;
   if ((N = get_argument (argc, argv, "-v"))) {
Index: trunk/Ohana/src/dvolens/src/dvolens_client.c
===================================================================
--- trunk/Ohana/src/dvolens/src/dvolens_client.c	(revision 39536)
+++ trunk/Ohana/src/dvolens/src/dvolens_client.c	(revision 39537)
@@ -19,4 +19,5 @@
       FREE (HOSTDIR);
       FREE (CATDIR);
+      FREE (UserCatalog);
       free_images();
       FreeWarpGroups();
Index: trunk/Ohana/src/dvolens/src/update_objects.c
===================================================================
--- trunk/Ohana/src/dvolens/src/update_objects.c	(revision 39536)
+++ trunk/Ohana/src/dvolens/src/update_objects.c	(revision 39537)
@@ -50,4 +50,6 @@
     // does this host ID match the desired location for the table?
     if (!HostTableTestHost(skylist[0].regions[i], HOST_ID)) continue;
+
+    if (UserCatalog && strcasecmp (skylist[0].regions[i]->name, UserCatalog)) continue;
 
     INITTIME;
@@ -171,4 +173,5 @@
     if (UPDATE)             strextend (&command, "-update");
     if (REPAIR_LENSING_IDS) strextend (&command, "-repair-lensing-ids");
+    if (UserCatalog)        strextend (&command, "-catalog %s", UserCatalog);
 
     fprintf (stderr, "command: %s\n", command);
Index: trunk/Ohana/src/dvolens/src/update_objects_catalog.c
===================================================================
--- trunk/Ohana/src/dvolens/src/update_objects_catalog.c	(revision 39536)
+++ trunk/Ohana/src/dvolens/src/update_objects_catalog.c	(revision 39537)
@@ -109,5 +109,5 @@
 	  Mj = RecoverLensingIndex (average, measureSeq, lensing);
 	  if (Mj == -1) {
-	    fprintf (stderr, "failed %f %f : %d\n", average->R, average->D, lensing->imageID);
+	    if (Nfailed < 10) fprintf (stderr, "failed %f %f : %d\n", average->R, average->D, lensing->imageID);
 	    Nfailed ++;
 	    continue;
@@ -190,8 +190,13 @@
       // Fcal * lensing->F_ApR5 is in Jy
 
+      // F_ApR5 is <F_ApR5_i>, the mean of the lensing entries.  we will save stdev of F_ApR5_i, 
+      // not the r.m.s. of sF_ApR5
+
+      // stdev = sqrt(F_Ap_R5_i^2 / N - <F_Ap_R5>) 
+
       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].sF_ApR5 += SQ(Fcal * lensing-> F_ApR5);
 	lensobj[Nsec].fF_ApR5 +=           lensing->fF_ApR5;
 	N5[Nsec] ++;
@@ -201,5 +206,5 @@
 	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].sF_ApR6 += SQ(Fcal * lensing-> F_ApR6);
 	lensobj[Nsec].fF_ApR6 +=           lensing->fF_ApR6;
 	N6[Nsec] ++;
@@ -209,5 +214,5 @@
 	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].sF_ApR7 += SQ(Fcal * lensing-> F_ApR7);
 	lensobj[Nsec].fF_ApR7 +=           lensing->fF_ApR7;
 	N7[Nsec] ++;
@@ -253,7 +258,10 @@
       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];
+	lensobj[j].dF_ApR5  = sqrt(lensobj[j].dF_ApR5 / (float) N5[j]);
+
+	double S1 = SQ(lensobj[j]. F_ApR5); // <f>^2
+	double S2 = lensobj[j].sF_ApR5 / (float) N5[j]; // sum(f^2) / N
+	lensobj[j].sF_ApR5  = sqrt(S2 - S1) * (N5[j] / (N5[j] - 1.0)); // correct to sample stdev
       } else {
 	lensobj[j]. F_ApR5 = NAN;
@@ -265,7 +273,10 @@
       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];
+	lensobj[j].dF_ApR6 = sqrt(lensobj[j].dF_ApR6 / (float) N6[j]);
+
+	double S1 = SQ(lensobj[j]. F_ApR6); // <f>^2
+	double S2 = lensobj[j].sF_ApR6 / (float) N6[j]; // sum(f^2) / N
+	lensobj[j].sF_ApR6 = sqrt(S2 - S1) * (N6[j] / (N6[j] - 1.0)); // correct to sample stdev
       } else {
 	lensobj[j]. F_ApR6 = NAN;
@@ -277,7 +288,10 @@
       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];
+	lensobj[j].dF_ApR7 = sqrt(lensobj[j].dF_ApR7 / (float) N7[j]);
+
+	double S1 = SQ(lensobj[j]. F_ApR7); // <f>^2
+	double S2 = lensobj[j].sF_ApR7 / (float) N7[j]; // sum(f^2) / N
+	lensobj[j].sF_ApR7  = sqrt(S2 - S1) * (N7[j] / (N7[j] - 1.0)); // correct to sample stdev
       } else {
 	lensobj[j]. F_ApR7 = NAN;
@@ -286,13 +300,4 @@
 	lensobj[j].fF_ApR7 = NAN;
       }
-
-      lensobj[j].dF_ApR5 = sqrt(lensobj[j].dF_ApR5);
-      lensobj[j].sF_ApR5 = sqrt(lensobj[j].sF_ApR5);
-      lensobj[j].dF_ApR6 = sqrt(lensobj[j].dF_ApR6);
-      lensobj[j].sF_ApR6 = sqrt(lensobj[j].sF_ApR6);
-      lensobj[j].dF_ApR7 = sqrt(lensobj[j].dF_ApR7);
-      lensobj[j].sF_ApR7 = sqrt(lensobj[j].sF_ApR7);
-
-      // somewhere in here I should calculate the values of E1, E2, and gamma
 
       float e0 = Mxx_obj[j] + Myy_obj[j];
