Index: /branches/eam_branches/ohana.20170822/src/addstar/src/mkcmf.c
===================================================================
--- /branches/eam_branches/ohana.20170822/src/addstar/src/mkcmf.c	(revision 40236)
+++ /branches/eam_branches/ohana.20170822/src/addstar/src/mkcmf.c	(revision 40237)
@@ -33,6 +33,9 @@
 float BAD_PSFQF_FRAC = 0.0;
 
+static Coords coords;
 static float exptime = 1.0;
-static Coords coords;
+static float aper_offset = 0.0;
+static float aper_scale = 1.0; // this is set to 10^-0.4*aper_offset below is aper_offset is non-zero
+static float kron_scale = 1.0; // extra offset between psf and kron mags
 
 static char reserved[] =  "Reserved space.  This line can be used to add a new FITS card.";
@@ -175,4 +178,18 @@
     remove_argument (N, &argc, argv);
     exptime = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+  }  
+
+  // aperture-like and psf-like mags may have different effective zero points.  
+  // by setting this, we can check that we can apply different zero points
+  if ((N = get_argument (argc, argv, "-aper-offset"))) {
+    remove_argument (N, &argc, argv);
+    aper_offset = atof (argv[N]);
+    aper_scale = pow(10.0, -0.4*aper_offset);
+    remove_argument (N, &argc, argv);
+  }  
+  if ((N = get_argument (argc, argv, "-kron-scale"))) {
+    remove_argument (N, &argc, argv);
+    kron_scale = atof (argv[N]);
     remove_argument (N, &argc, argv);
   }  
@@ -795,5 +812,5 @@
     stars[i].Y = Y[i];
     stars[i].M = M[i];
-    stars[i].Map = M[i] - 0.05;
+    stars[i].Map = M[i] + aper_offset - 0.05;
 
     // randomly give poor PSFQF values
@@ -822,6 +839,6 @@
     stars[i].flags     = Flag[i];
 
-    stars[i].kronFlux  = flux * 1.25;
-    stars[i].kronFluxErr = fSN * flux * 1.25;
+    stars[i].kronFlux  = flux * kron_scale * aper_scale;
+    stars[i].kronFluxErr = fSN * flux * kron_scale * aper_scale;
   }
 
@@ -856,6 +873,6 @@
     stars[i].Y = Y[i];
     stars[i].M = M[i];
-    stars[i].Map = M[i] - 0.05;
-    stars[i].MapRaw = M[i] - 0.10;
+    stars[i].Map = M[i] + aper_offset - 0.05;
+    stars[i].MapRaw = M[i] + aper_offset - 0.10;
 
     stars[i].Flux = flux;
@@ -892,6 +909,6 @@
     stars[i].flags     = Flag[i];
 
-    stars[i].kronFlux  = flux * 1.25;
-    stars[i].kronFluxErr = fSN * flux * 1.25;
+    stars[i].kronFlux  = flux * kron_scale * aper_scale;
+    stars[i].kronFluxErr = fSN * flux * kron_scale * aper_scale;
   }
 
@@ -937,6 +954,6 @@
     stars[i].dFlux = flux * fSN;
 
-    stars[i].Map = M[i] - 0.05;
-    stars[i].MapRaw = M[i] - 0.10;
+    stars[i].Map = M[i] + aper_offset - 0.05;
+    stars[i].MapRaw = M[i] + aper_offset - 0.10;
 
     stars[i].apRadius = 8.0;
@@ -987,9 +1004,9 @@
     stars[i].Mrh       = FX;
 
-    stars[i].kronFlux  = flux * 1.25;
-    stars[i].kronFluxErr = fSN * flux * 1.25;
-
-    stars[i].kronInner = fSN * flux * 0.9;
-    stars[i].kronOuter = fSN * flux * 1.5;
+    stars[i].kronFlux  = flux * kron_scale * aper_scale;
+    stars[i].kronFluxErr = fSN * flux * kron_scale * aper_scale;
+
+    stars[i].kronInner = fSN * flux * 0.9 * aper_scale;
+    stars[i].kronOuter = fSN * flux * 1.5 * aper_scale;
 
     stars[i].skyLimitRad = 1;
@@ -1044,6 +1061,6 @@
     stars[i].dFlux = flux * fSN;
 
-    stars[i].Map = M[i] - 0.05;
-    stars[i].MapRaw = M[i] - 0.10;
+    stars[i].Map = M[i] + aper_offset - 0.05;
+    stars[i].MapRaw = M[i] + aper_offset - 0.10;
 
     stars[i].apRadius = 8.0;
@@ -1094,9 +1111,9 @@
     stars[i].Mrh       = FX;
 
-    stars[i].kronFlux  = flux * 1.25;
-    stars[i].kronFluxErr = fSN * flux * 1.25;
-
-    stars[i].kronInner = fSN * flux * 0.9;
-    stars[i].kronOuter = fSN * flux * 1.5;
+    stars[i].kronFlux  = flux * kron_scale * aper_scale;
+    stars[i].kronFluxErr = fSN * flux * kron_scale * aper_scale;
+
+    stars[i].kronInner = fSN * flux * 0.9 * aper_scale;
+    stars[i].kronOuter = fSN * flux * 1.5 * aper_scale;
 
     // stars[i].skyLimitRad = 1;
@@ -1148,6 +1165,6 @@
     stars[i].dFlux = flux * fSN;
 
-    stars[i].Map = M[i] - 0.05;
-    stars[i].MapRaw = M[i] - 0.10;
+    stars[i].Map = M[i] + aper_offset - 0.05;
+    stars[i].MapRaw = M[i] + aper_offset - 0.10;
 
     stars[i].apRadius = 8.0;
@@ -1189,9 +1206,9 @@
     stars[i].Mrh = FX;
 
-    stars[i].kronFlux = flux * 1.25;
-    stars[i].kronFluxErr = fSN * flux * 1.25;
-
-    stars[i].kronInner = fSN * flux * 0.9;
-    stars[i].kronOuter = fSN * flux * 1.5;
+    stars[i].kronFlux = flux * kron_scale * aper_scale;
+    stars[i].kronFluxErr = fSN * flux * kron_scale * aper_scale;
+
+    stars[i].kronInner = fSN * flux * 0.9 * aper_scale;
+    stars[i].kronOuter = fSN * flux * 1.5 * aper_scale;
 
     stars[i].chipNum = 1;
@@ -1274,6 +1291,6 @@
     stars[i].dFlux = flux * fSN;
 
-    stars[i].Map = M[i] - 0.05;
-    stars[i].MapRaw = M[i] - 0.10;
+    stars[i].Map = M[i] + aper_offset - 0.05;
+    stars[i].MapRaw = M[i] + aper_offset - 0.10;
 
     stars[i].apRadius = 8.0;
@@ -1351,9 +1368,9 @@
     stars[i].srcChipY   = Y[i] + 10.0;
 
-    stars[i].kronFlux  = flux * 1.25;
-    stars[i].kronFluxErr = fSN * flux * 1.25;
-
-    stars[i].kronInner = fSN * flux * 0.9;
-    stars[i].kronOuter = fSN * flux * 1.5;
+    stars[i].kronFlux  = flux * kron_scale * aper_scale;
+    stars[i].kronFluxErr = fSN * flux * kron_scale * aper_scale;
+
+    stars[i].kronInner = fSN * flux * 0.9 * aper_scale;
+    stars[i].kronOuter = fSN * flux * 1.5 * aper_scale;
 
     stars[i].skyLimitRad = 1;
