Index: branches/eam_branches/relphot.20210521/src/StarOps.c
===================================================================
--- branches/eam_branches/relphot.20210521/src/StarOps.c	(revision 41603)
+++ branches/eam_branches/relphot.20210521/src/StarOps.c	(revision 41606)
@@ -8,5 +8,4 @@
   Catalog *catalog;
   int Ncatalog;
-  FlatCorrectionTable *flatcorr;
   SetMrelInfo summary;
 } ThreadInfo;
@@ -14,6 +13,6 @@
 // ** internal functions:
 void *setMrel_worker (void *data);
-int setMrel_threaded (Catalog *catalog, int Ncatalog, FlatCorrectionTable *flatcorr);
-int setMrel_catalog (Catalog *catalog, int Nc, int pass, FlatCorrectionTable *flatcorr, SetMrelInfo *results, int Nsecfilt);
+int setMrel_threaded (Catalog *catalog, int Ncatalog);
+int setMrel_catalog (Catalog *catalog, int Nc, int pass, SetMrelInfo *results, int Nsecfilt);
 int print_measure_set (Average *average, SecFilt *secfilt, Measure *measure);
 
@@ -298,10 +297,10 @@
 // * setMrelOutput updates average EXT flags (PS1 and 2MASS)
 
-int setMrel (Catalog *catalog, int Ncatalog, FlatCorrectionTable *flatcorr) {
+int setMrel (Catalog *catalog, int Ncatalog) {
 
   int i;
 
   if (NTHREADS) {
-    int status = setMrel_threaded (catalog, Ncatalog, flatcorr);
+    int status = setMrel_threaded (catalog, Ncatalog);
     return status;
   }
@@ -314,5 +313,5 @@
 
   for (i = 0; i < Ncatalog; i++) {
-    setMrel_catalog_alt (catalog, i, FALSE, flatcorr, &results, Nsecfilt);
+    setMrel_catalog_alt (catalog, i, FALSE, &results, Nsecfilt);
     SetMrelInfoAccum (&summary, &results);
   }
@@ -326,5 +325,5 @@
 
 // setMrelOutput is NOT threaded because we read/write catalogs one at a time (for now)
-int setMrelOutput (Catalog *catalog, int Ncatalog, FlatCorrectionTable *flatcorr) {
+int setMrelOutput (Catalog *catalog, int Ncatalog) {
 
   int i;
@@ -337,5 +336,5 @@
 
   for (i = 0; i < Ncatalog; i++) {
-    setMrel_catalog_alt (catalog, i, TRUE, flatcorr, &results, Nsecfilt);
+    setMrel_catalog_alt (catalog, i, TRUE, &results, Nsecfilt);
     SetMrelInfoAccum (&summary, &results);
   }
@@ -347,5 +346,5 @@
 }
 
-int setMrel_threaded (Catalog *catalog, int Ncatalog, FlatCorrectionTable *flatcorr) {
+int setMrel_threaded (Catalog *catalog, int Ncatalog) {
 
   int i;
@@ -374,5 +373,4 @@
     threadinfo[i].catalog  =  catalog;
     threadinfo[i].Ncatalog = Ncatalog;
-    threadinfo[i].flatcorr = flatcorr;
     SetMrelInfoInit (&threadinfo[i].summary, FALSE);
     pthread_create (&threads[i], NULL, setMrel_worker, &threadinfo[i]);
@@ -435,7 +433,6 @@
 
     Catalog *catalog = threadinfo->catalog;
-    FlatCorrectionTable *flatcorr = threadinfo->flatcorr;
-
-    setMrel_catalog_alt (catalog, i, FALSE, flatcorr, &results, Nsecfilt);
+
+    setMrel_catalog_alt (catalog, i, FALSE, &results, Nsecfilt);
     SetMrelInfoAccum (&threadinfo->summary, &results);
   }
@@ -474,5 +471,5 @@
 
 /* set measure.Mcal for all measures except ID_MEAS_NOCAL and ID_IMAGE_PHOTOM_NOCAL */
-int setMcalOutput (Catalog *catalog, int Ncatalog, FlatCorrectionTable *flatcorr) {
+int setMcalOutput (Catalog *catalog, int Ncatalog) {
 
   int i;
@@ -667,5 +664,5 @@
 # define NSIGMA_CLIP 3.0
 # define NSIGMA_REJECT 5.0
-void clean_measures (Catalog *catalog, int Ncatalog, int final, FlatCorrectionTable *flatcorr) {
+void clean_measures (Catalog *catalog, int Ncatalog, int final) {
 
   off_t j, k, m, Nmax, Ndel, Nave;
@@ -833,5 +830,5 @@
 }
 
-StatType statsStarN (Catalog *catalog, int Ncatalog, int Nsec, int seccode, FlatCorrectionTable *flatcorr) {
+StatType statsStarN (Catalog *catalog, int Ncatalog, int Nsec, int seccode) {
 
   off_t j, k, m, Ntot;
@@ -1106,5 +1103,5 @@
       float MrelPSF  = getMrel  (catalog, m, c, MAG_CLASS_PSF, MAG_SRC_CHP); // average magnitude
       // float Mgrid    = getMgridTiny (&catalog[c].measureT[m]);                    // camera offset (deprecated?)
-      // float Mflat    = getMflat (m, c, flatcorr, catalog); // flat-field correction
+      // float Mflat    = getMflat (m, c, catalog); // flat-field correction
 
       off_t n = catalog[c].measureT[m].averef;
@@ -1121,2 +1118,11 @@
   fclose (fout);
 }
+
+// maybe make this a macro
+float getMflat (off_t meas, int cat, Catalog *catalog) {
+  float offset = catalog[cat].measureT[meas].Mflat;
+  if (!isfinite(offset)) {
+    offset = 0.0;
+  }
+  return (offset);
+}
