Index: trunk/Ohana/src/relastro/include/relastro.h
===================================================================
--- trunk/Ohana/src/relastro/include/relastro.h	(revision 39995)
+++ trunk/Ohana/src/relastro/include/relastro.h	(revision 40291)
@@ -215,7 +215,8 @@
   unsigned int stop;
   off_t myImage;
-  float Mcal;
+  float McalPSF;
+  float McalAPER;
   float dMcal;
-  short Xm;
+  float McalChiSq;
   float secz;
   char flags;
@@ -377,4 +378,5 @@
 int    SKIP_CFH;
 
+int    UPDATE_ALL_MEASURE;
 int    UPDATE_PS1_STACK_MEASURE;
 int    UPDATE_PS1_CHIP_MEASURE;
Index: trunk/Ohana/src/relastro/src/BrightCatalog.c
===================================================================
--- trunk/Ohana/src/relastro/src/BrightCatalog.c	(revision 39995)
+++ trunk/Ohana/src/relastro/src/BrightCatalog.c	(revision 40291)
@@ -68,5 +68,6 @@
     GET_COLUMN(D,         "DEC",  	double);
     GET_COLUMN(M,         "MAG_SYS",  	float);
-    GET_COLUMN(Mcal,      "MAG_CAL",  	float);
+    GET_COLUMN(McalPSF,   "MCAL_PSF",  	float);
+    GET_COLUMN(McalAPER,  "MCAL_APER", 	float);
     GET_COLUMN(dM,        "MAG_ERR",  	float);
     GET_COLUMN(airmass,   "AIRMASS",  	float);
@@ -94,5 +95,6 @@
       measure[i].D         = D[i];
       measure[i].M         = M[i];
-      measure[i].Mcal      = Mcal[i];
+      measure[i].McalPSF   = McalPSF[i];
+      measure[i].McalAPER  = McalAPER[i];
       measure[i].dM        = dM[i];
       measure[i].airmass   = airmass[i];
@@ -120,5 +122,6 @@
     free (D       );
     free (M       );
-    free (Mcal    );
+    free (McalPSF );
+    free (McalAPER);
     free (dM      );
     free (airmass );
@@ -285,12 +288,12 @@
     ALLOCATE (secfilt, SecFilt, Nrow);
     for (i = 0; i < Nrow; i++) {
-      secfilt[i].M      = M[i];         
-      secfilt[i].dM     = dM[i];
-      secfilt[i].Mchisq = Mchisq[i];
-      secfilt[i].flags  = flags[i];
-      secfilt[i].Ncode  = Ncode[i];
-      secfilt[i].Nused  = Nused[i];
-      secfilt[i].Mmin   = Mmin[i];
-      secfilt[i].Mmax   = Mmax[i];
+      secfilt[i].MpsfChp  = M[i];         
+      secfilt[i].dMpsfChp = dM[i];
+      secfilt[i].Mchisq   = Mchisq[i];
+      secfilt[i].flags    = flags[i];
+      secfilt[i].Ncode    = Ncode[i];
+      secfilt[i].Nused    = Nused[i];
+      secfilt[i].Mmin     = Mmin[i];
+      secfilt[i].Mmax     = Mmax[i];
     }
     // fprintf (stderr, "loaded data for %lld secfilt\n", (long long) Nrow);
@@ -385,5 +388,6 @@
     double *D         ; ALLOCATE (D        ,  double, catalog->Nmeasure);
     float  *M         ; ALLOCATE (M        ,  float,  catalog->Nmeasure);
-    float  *Mcal      ; ALLOCATE (Mcal     ,  float,  catalog->Nmeasure);
+    float  *McalPSF   ; ALLOCATE (McalPSF  ,  float,  catalog->Nmeasure);
+    float  *McalAPER  ; ALLOCATE (McalAPER ,  float,  catalog->Nmeasure);
     float  *dM        ; ALLOCATE (dM       ,  float,  catalog->Nmeasure);
     float  *airmass   ; ALLOCATE (airmass  ,  float,  catalog->Nmeasure);
@@ -408,5 +412,6 @@
       D[i]        = measure[i].D        ;
       M[i]  	  = measure[i].M        ;
-      Mcal[i]     = measure[i].Mcal     ;
+      McalPSF[i]  = measure[i].McalPSF  ;
+      McalAPER[i] = measure[i].McalAPER ;
       dM[i]       = measure[i].dM       ;
       airmass[i]  = measure[i].airmass  ;
@@ -434,5 +439,6 @@
     gfits_set_bintable_column (&theader, &ftable, "DEC",  	D,         catalog->Nmeasure);
     gfits_set_bintable_column (&theader, &ftable, "MAG_SYS",  	M,         catalog->Nmeasure);
-    gfits_set_bintable_column (&theader, &ftable, "MAG_CAL",  	Mcal,      catalog->Nmeasure);
+    gfits_set_bintable_column (&theader, &ftable, "MCAL_PSF",  	McalPSF,   catalog->Nmeasure);
+    gfits_set_bintable_column (&theader, &ftable, "MCAL_APER", 	McalAPER,  catalog->Nmeasure);
     gfits_set_bintable_column (&theader, &ftable, "MAG_ERR",  	dM,        catalog->Nmeasure);
     gfits_set_bintable_column (&theader, &ftable, "AIRMASS",  	airmass,   catalog->Nmeasure);
@@ -454,5 +460,6 @@
     free (D       );
     free (M       );
-    free (Mcal    );
+    free (McalPSF );
+    free (McalAPER);
     free (dM      );
     free (airmass );
@@ -694,12 +701,12 @@
     SecFilt *secfilt = catalog->secfilt;
     for (i = 0; i < Nsec; i++) {
-      M     [i]       = secfilt[i].M      ;
-      dM    [i]       = secfilt[i].dM     ;
-      Mchisq[i]       = secfilt[i].Mchisq ;
-      flags [i]       = secfilt[i].flags  ;
-      Ncode [i]       = secfilt[i].Ncode  ;
-      Nused [i]       = secfilt[i].Nused  ;
-      Mmin  [i]       = secfilt[i].Mmin   ;
-      Mmax  [i]       = secfilt[i].Mmax   ;
+      M     [i]       = secfilt[i].MpsfChp ;
+      dM    [i]       = secfilt[i].dMpsfChp;
+      Mchisq[i]       = secfilt[i].Mchisq  ;
+      flags [i]       = secfilt[i].flags   ;
+      Ncode [i]       = secfilt[i].Ncode   ;
+      Nused [i]       = secfilt[i].Nused   ;
+      Mmin  [i]       = secfilt[i].Mmin    ;
+      Mmax  [i]       = secfilt[i].Mmax    ;
     }
 
Index: trunk/Ohana/src/relastro/src/ImageOps.c
===================================================================
--- trunk/Ohana/src/relastro/src/ImageOps.c	(revision 39995)
+++ trunk/Ohana/src/relastro/src/ImageOps.c	(revision 40291)
@@ -431,5 +431,5 @@
   /**** dMcal vs airmass ****/
   for (i = 0; i < Nimage; i++) {
-    Mlist[i] = image[i].Mcal;
+    Mlist[i] = image[i].McalPSF;
     dlist[i] = image[i].dMcal;
     xlist[i] = image[i].secz;
@@ -819,8 +819,8 @@
 
     if ((DCR_BLUE_NSEC_POS >= 0) && (DCR_BLUE_NSEC_NEG >= -1)) {
-      ref[i].ColorBlue = catalog[c].secfilt[n*Nsecfilt + DCR_BLUE_NSEC_POS].M - catalog[c].secfilt[n*Nsecfilt + DCR_BLUE_NSEC_NEG].M;
+      ref[i].ColorBlue = catalog[c].secfilt[n*Nsecfilt + DCR_BLUE_NSEC_POS].MpsfChp - catalog[c].secfilt[n*Nsecfilt + DCR_BLUE_NSEC_NEG].MpsfChp;
     }
     if ((DCR_RED_NSEC_POS >= 0) && (DCR_RED_NSEC_NEG >= -1)) {
-      ref[i].ColorRed = catalog[c].secfilt[n*Nsecfilt + DCR_RED_NSEC_POS].M - catalog[c].secfilt[n*Nsecfilt + DCR_RED_NSEC_NEG].M;
+      ref[i].ColorRed = catalog[c].secfilt[n*Nsecfilt + DCR_RED_NSEC_POS].MpsfChp - catalog[c].secfilt[n*Nsecfilt + DCR_RED_NSEC_NEG].MpsfChp;
     }
 
Index: trunk/Ohana/src/relastro/src/MosaicOps.c
===================================================================
--- trunk/Ohana/src/relastro/src/MosaicOps.c	(revision 39995)
+++ trunk/Ohana/src/relastro/src/MosaicOps.c	(revision 40291)
@@ -97,13 +97,14 @@
 
     /* a new mosaic, define ranges */
-    mosaic[Nmosaic].start   = start;
-    mosaic[Nmosaic].stop    = stop;
-    mosaic[Nmosaic].Mcal    = 0.0;
-    mosaic[Nmosaic].dMcal   = 0.0;
-    mosaic[Nmosaic].Xm      = 0.0;
-    mosaic[Nmosaic].flags   = image[i].flags;
-    mosaic[Nmosaic].secz    = image[i].secz;
-    mosaic[Nmosaic].coords  = image[i].coords;
-    mosaic[Nmosaic].myImage = i;
+    mosaic[Nmosaic].start     = start;
+    mosaic[Nmosaic].stop      = stop;
+    mosaic[Nmosaic].McalPSF   = 0.0;
+    mosaic[Nmosaic].McalAPER  = 0.0;
+    mosaic[Nmosaic].dMcal     = 0.0;
+    mosaic[Nmosaic].McalChiSq = 0.0;
+    mosaic[Nmosaic].flags     = image[i].flags;
+    mosaic[Nmosaic].secz      = image[i].secz;
+    mosaic[Nmosaic].coords    = image[i].coords;
+    mosaic[Nmosaic].myImage   = i;
 
     // init the mosaic_own_images array data
Index: trunk/Ohana/src/relastro/src/UpdateMeasures.c
===================================================================
--- trunk/Ohana/src/relastro/src/UpdateMeasures.c	(revision 39995)
+++ trunk/Ohana/src/relastro/src/UpdateMeasures.c	(revision 40291)
@@ -114,4 +114,16 @@
       }
 
+      // XXX this stuff is rather hackish, added to do GSC/HSC/Megacam astrometry
+
+      // only modify the chip coordinates
+      if (UPDATE_ALL_MEASURE) {
+	measureT->R = R;
+	measureT->D = D;
+	if (measureB) {
+	  measureB->R = R;
+	  measureB->D = D;
+	}
+	goto set_measure_done;
+      }
       // only modify the chip coordinates
       if (UPDATE_PS1_STACK_MEASURE && isGPC1stack (measureT->photcode)) {
@@ -122,4 +134,5 @@
 	  measureB->D = D;
 	}
+	goto set_measure_done;
       }
       // only modify the chip coordinates
@@ -131,23 +144,28 @@
 	  measureB->D = D;
 	}
-      }
-      // only modify the chip coordinates
-      if (UPDATE_HSC_MEASURE && isGPC1chip (measureT->photcode)) {
-	measureT->R = R;
-	measureT->D = D;
-	if (measureB) {
-	  measureB->R = R;
-	  measureB->D = D;
-	}
-      }
-      // only modify the chip coordinates
-      if (UPDATE_CFH_MEASURE && isGPC1chip (measureT->photcode)) {
-	measureT->R = R;
-	measureT->D = D;
-	if (measureB) {
-	  measureB->R = R;
-	  measureB->D = D;
-	}
-      }
+	goto set_measure_done;
+      }
+      // only modify the chip coordinates
+      if (UPDATE_HSC_MEASURE && isHSCchip (measureT->photcode)) {
+	measureT->R = R;
+	measureT->D = D;
+	if (measureB) {
+	  measureB->R = R;
+	  measureB->D = D;
+	}
+	goto set_measure_done;
+      }
+      // only modify the chip coordinates
+      if (UPDATE_CFH_MEASURE && isCFHchip (measureT->photcode)) {
+	measureT->R = R;
+	measureT->D = D;
+	if (measureB) {
+	  measureB->R = R;
+	  measureB->D = D;
+	}
+	goto set_measure_done;
+      }
+    set_measure_done:
+      continue; // XXX this line is needed only to support the label above
     }
     if (VERBOSE) fprintf (stderr, "%s : Noff ori RA %d ( %d %d %d ), Noff ori DEC %d ( %d %d %d )\n", catalog[i].filename, NoffRAori, NoffRAchip, NoffRAstack, NoffRAwarp, NoffDECori, NoffDECchip, NoffDECstack, NoffDECwarp);
Index: trunk/Ohana/src/relastro/src/UpdateObjectOffsets.c
===================================================================
--- trunk/Ohana/src/relastro/src/UpdateObjectOffsets.c	(revision 39995)
+++ trunk/Ohana/src/relastro/src/UpdateObjectOffsets.c	(revision 40291)
@@ -208,13 +208,14 @@
     if (CHECK_MEASURE_TO_IMAGE) strextend (&command, "-check-measures");
 
+    if (UPDATE_ALL_MEASURE)       strextend (&command, "-update-all-cameras");
     if (UPDATE_PS1_STACK_MEASURE) strextend (&command, "-update-ps1-stack");
-    if (UPDATE_PS1_CHIP_MEASURE) strextend (&command, "-update-ps1-chip");
-    if (UPDATE_HSC_MEASURE)    	 strextend (&command, "-update-hsc");
-    if (UPDATE_CFH_MEASURE)    	 strextend (&command, "-update-cfh");
-
-    if (UPDATE)        strextend (&command, "-update");
+    if (UPDATE_PS1_CHIP_MEASURE)  strextend (&command, "-update-ps1-chip");
+    if (UPDATE_HSC_MEASURE)    	  strextend (&command, "-update-hsc");
+    if (UPDATE_CFH_MEASURE)    	  strextend (&command, "-update-cfh");
+
+    if (UPDATE)           strextend (&command, "-update");
     if (RESET_BAD_IMAGES) strextend (&command, "-reset-bad-images");
-    if (USE_BASIC_CHECK) strextend (&command, "-basic-image-search");
-    if (USE_ALL_IMAGES)      strextend (&command, "-use-all-images");
+    if (USE_BASIC_CHECK)  strextend (&command, "-basic-image-search");
+    if (USE_ALL_IMAGES)   strextend (&command, "-use-all-images");
 
     if (MinBadQF > 0.0)        strextend (&command, "-min-bad-psfqf %f", MinBadQF); 
@@ -347,8 +348,9 @@
     if (CHECK_MEASURE_TO_IMAGE) strextend (&command, "-check-measures");
 
+    if (UPDATE_ALL_MEASURE)       strextend (&command, "-update-all-cameras");
     if (UPDATE_PS1_STACK_MEASURE) strextend (&command, "-update-ps1-stack");
-    if (UPDATE_PS1_CHIP_MEASURE) strextend (&command, "-update-ps1-chip");
-    if (UPDATE_HSC_MEASURE)    	 strextend (&command, "-update-hsc");
-    if (UPDATE_CFH_MEASURE)    	 strextend (&command, "-update-cfh");
+    if (UPDATE_PS1_CHIP_MEASURE)  strextend (&command, "-update-ps1-chip");
+    if (UPDATE_HSC_MEASURE)    	  strextend (&command, "-update-hsc");
+    if (UPDATE_CFH_MEASURE)    	  strextend (&command, "-update-cfh");
 
     if (UPDATE)        strextend (&command, "-update");
Index: trunk/Ohana/src/relastro/src/args.c
===================================================================
--- trunk/Ohana/src/relastro/src/args.c	(revision 39995)
+++ trunk/Ohana/src/relastro/src/args.c	(revision 40291)
@@ -158,4 +158,9 @@
   }
 
+  UPDATE_ALL_MEASURE = FALSE;
+  if ((N = get_argument (argc, argv, "-update-all-cameras"))) {
+    remove_argument (N, &argc, argv);
+    UPDATE_ALL_MEASURE = TRUE;
+  }
   UPDATE_PS1_STACK_MEASURE = FALSE;
   if ((N = get_argument (argc, argv, "-update-ps1-stack"))) {
@@ -179,11 +184,11 @@
   }
   if (RELASTRO_OP == OP_UPDATE_OFFSETS) {
-    if (!UPDATE_PS1_STACK_MEASURE && !UPDATE_PS1_CHIP_MEASURE && !UPDATE_HSC_MEASURE && !UPDATE_CFH_MEASURE) {
-      fprintf (stderr, "for -update-offsets, need to select at least one of -update-ps1-stack, -update-ps1-chip, -update-hsc, -update-cfh\n");
+    if (!UPDATE_ALL_MEASURE && !UPDATE_PS1_STACK_MEASURE && !UPDATE_PS1_CHIP_MEASURE && !UPDATE_HSC_MEASURE && !UPDATE_CFH_MEASURE) {
+      fprintf (stderr, "for -update-offsets, need to select at least one of -update-all-cameras, -update-ps1-stack, -update-ps1-chip, -update-hsc, -update-cfh\n");
       exit (2);
     }
   }
   if ((RELASTRO_OP == OP_PARALLEL_IMAGES) || (RELASTRO_OP == OP_IMAGES)) {
-    if (APPLY_OFFSETS && !UPDATE_PS1_STACK_MEASURE && !UPDATE_PS1_CHIP_MEASURE && !UPDATE_HSC_MEASURE && !UPDATE_CFH_MEASURE) {
+    if (APPLY_OFFSETS && !UPDATE_ALL_MEASURE && !UPDATE_PS1_STACK_MEASURE && !UPDATE_PS1_CHIP_MEASURE && !UPDATE_HSC_MEASURE && !UPDATE_CFH_MEASURE) {
       fprintf (stderr, "for [-images or -parallel-images] with -apply-offsets, need to select at least one of -update-ps1-stack, -update-ps1-chip, -update-hsc, -update-cfh\n");
       exit (2);
@@ -890,4 +895,9 @@
   }
 
+  UPDATE_ALL_MEASURE = FALSE;
+  if ((N = get_argument (argc, argv, "-update-all-cameras"))) {
+    remove_argument (N, &argc, argv);
+    UPDATE_ALL_MEASURE = TRUE;
+  }
   UPDATE_PS1_STACK_MEASURE = FALSE;
   if ((N = get_argument (argc, argv, "-update-ps1-stack"))) {
@@ -911,5 +921,5 @@
   }
   if (RELASTRO_OP == OP_UPDATE_OFFSETS) {
-    if (!UPDATE_PS1_STACK_MEASURE && !UPDATE_PS1_CHIP_MEASURE && !UPDATE_HSC_MEASURE && !UPDATE_CFH_MEASURE) {
+    if (!UPDATE_ALL_MEASURE && !UPDATE_PS1_STACK_MEASURE && !UPDATE_PS1_CHIP_MEASURE && !UPDATE_HSC_MEASURE && !UPDATE_CFH_MEASURE) {
       fprintf (stderr, "for -update-offsets, need to select at least one of -update-ps1-stack, -update-ps1-chip, -update-hsc, -update-cfh\n");
       exit (2);
