Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/include/relastro.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/include/relastro.h	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/include/relastro.h	(revision 37006)
@@ -75,5 +75,6 @@
   double X, Y;  /* Chip Coords   - pixels  */
   float Mag;
-  float Color;
+  float ColorBlue;
+  float ColorRed;
   float dMag;
   float dPos;
@@ -209,7 +210,11 @@
 SkyRegionSelection SELECTION;
 
-char         *DCR_COLOR_POS,    *DCR_COLOR_NEG;
-PhotCode     *DCR_PHOTCODE_POS, *DCR_PHOTCODE_NEG; 
-int           DCR_NSEC_POS,      DCR_NSEC_NEG; 
+char         *DCR_BLUE_COLOR_POS,    *DCR_BLUE_COLOR_NEG;
+PhotCode     *DCR_BLUE_PHOTCODE_POS, *DCR_BLUE_PHOTCODE_NEG; 
+int           DCR_BLUE_NSEC_POS,      DCR_BLUE_NSEC_NEG; 
+
+char         *DCR_RED_COLOR_POS,    *DCR_RED_COLOR_NEG;
+PhotCode     *DCR_RED_PHOTCODE_POS, *DCR_RED_PHOTCODE_NEG; 
+int           DCR_RED_NSEC_POS,      DCR_RED_NSEC_NEG; 
 
 int ImagSelect;
@@ -523,5 +528,6 @@
 int select_mosaics_hostregion (RegionHostTable *regionHosts, Image *image, off_t Nimage);
 
-float getColor (off_t meas, int cat);
+float getColorBlue (off_t meas, int cat);
+float getColorRed (off_t meas, int cat);
 
 int strextend (char *input, char *format,...);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/BrightCatalog.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/BrightCatalog.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/BrightCatalog.c	(revision 37006)
@@ -145,33 +145,34 @@
     if (!gfits_fread_ftable_data (f, &ftable, FALSE)) goto escape;
 
-    GET_COLUMN(R,              "RA",          double);
-    GET_COLUMN(D,              "DEC",         double);
-    GET_COLUMN(dR,             "RA_ERR",      float);
-    GET_COLUMN(dD,             "DEC_ERR",     float);
-    GET_COLUMN(uR,             "U_RA",        float);
-    GET_COLUMN(uD,             "U_DEC",       float);
-    GET_COLUMN(duR,            "V_RA_ERR",    float);
-    GET_COLUMN(duD,            "V_DEC_ERR",   float);
-    GET_COLUMN(P,              "PAR",         float);
-    GET_COLUMN(dP,             "PAR_ERR",     float);
-    GET_COLUMN(ChiSqAve,       "CHISQ_POS",   float);
-    GET_COLUMN(ChiSqPM,        "CHISQ_PM",    float);
-    GET_COLUMN(ChiSqPar,       "CHISQ_PAP",   float);
-    GET_COLUMN(Tmean,          "MEAN_EPOCH",  int);
-    GET_COLUMN(Trange,         "TIME_RANGE",  int);
-    GET_COLUMN(stargal,        "STARGAL_SEP", float);
-    GET_COLUMN(Npos,           "NUMBER_POS",  short);
-    GET_COLUMN(Nmeasure,       "NMEASURE",    short);
-    GET_COLUMN(Nmissing,       "NMISSING",    short);
-    GET_COLUMN(Nextend,        "NEXTEND",     short);
-    GET_COLUMN(measureOffset,  "OFF_MEASURE", int);
-    GET_COLUMN(missingOffset,  "OFF_MISSING", int);
-    GET_COLUMN(refColor,   "REF_COLOR",  float);
-    GET_COLUMN(flags,          "FLAGS",       int);
-    GET_COLUMN(photFlagsUpper, "PHOTFLAGS_U", int);
-    GET_COLUMN(photFlagsLower, "PHOTFLAGS_L", int);
-    GET_COLUMN(objID,          "OBJ_ID",      int);
-    GET_COLUMN(catID,          "CAT_ID",      int);
-    GET_COLUMN(extID,          "EXT_ID",      int64_t);
+    GET_COLUMN(R,              "RA",             double);
+    GET_COLUMN(D,              "DEC",            double);
+    GET_COLUMN(dR,             "RA_ERR",         float);
+    GET_COLUMN(dD,             "DEC_ERR",        float);
+    GET_COLUMN(uR,             "U_RA",           float);
+    GET_COLUMN(uD,             "U_DEC",          float);
+    GET_COLUMN(duR,            "V_RA_ERR",       float);
+    GET_COLUMN(duD,            "V_DEC_ERR",      float);
+    GET_COLUMN(P,              "PAR",            float);
+    GET_COLUMN(dP,             "PAR_ERR",        float);
+    GET_COLUMN(ChiSqAve,       "CHISQ_POS",      float);
+    GET_COLUMN(ChiSqPM,        "CHISQ_PM",       float);
+    GET_COLUMN(ChiSqPar,       "CHISQ_PAP",      float);
+    GET_COLUMN(Tmean,          "MEAN_EPOCH",     int);
+    GET_COLUMN(Trange,         "TIME_RANGE",     int);
+    GET_COLUMN(stargal,        "STARGAL_SEP",    float);
+    GET_COLUMN(Npos,           "NUMBER_POS",     short);
+    GET_COLUMN(Nmeasure,       "NMEASURE",       short);
+    GET_COLUMN(Nmissing,       "NMISSING",       short);
+    GET_COLUMN(Nextend,        "NEXTEND",        short);
+    GET_COLUMN(measureOffset,  "OFF_MEASURE",    int);
+    GET_COLUMN(missingOffset,  "OFF_MISSING",    int);
+    GET_COLUMN(refColorBlue,   "REF_COLOR_BLUE", float);
+    GET_COLUMN(refColorRed,    "REF_COLOR_RED",  float);
+    GET_COLUMN(flags,          "FLAGS",          int);
+    GET_COLUMN(photFlagsUpper, "PHOTFLAGS_U",    int);
+    GET_COLUMN(photFlagsLower, "PHOTFLAGS_L",    int);
+    GET_COLUMN(objID,          "OBJ_ID",         int);
+    GET_COLUMN(catID,          "CAT_ID",         int);
+    GET_COLUMN(extID,          "EXT_ID",         int64_t);
     gfits_free_header (&theader);
     gfits_free_table  (&ftable);
@@ -202,5 +203,6 @@
       average[i].measureOffset   = measureOffset[i]   ; 
       average[i].missingOffset   = missingOffset[i]   ; 
-      average[i].refColor    = refColor[i]    ;  
+      average[i].refColorBlue    = refColorBlue[i]    ;  
+      average[i].refColorRed     = refColorRed[i]     ;  
       average[i].flags           = flags[i]           ;
       average[i].photFlagsUpper  = photFlagsUpper[i]  ;
@@ -234,5 +236,6 @@
     free (measureOffset);
     free (missingOffset);
-    free (refColor);
+    free (refColorBlue);
+    free (refColorRed);
     free (flags);
     free (photFlagsUpper);
@@ -454,33 +457,34 @@
     gfits_create_table_header (&theader, "BINTABLE", "AVERAGE");
 
-    gfits_define_bintable_column (&theader, "D", "RA",          "RA", 	         	  	         		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "D", "DEC",         "DEC", 	         	 	         		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "RA_ERR",      "RA error", 	         	         		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "DEC_ERR",     "DEC error", 	         	         		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "U_RA",        "RA*cos(D) proper-motion", 	         		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "U_DEC",       "DEC proper-motion", 	         	 		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "V_RA_ERR",    "RA*cos(D) p-m error", 	         	 		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "V_DEC_ERR",   "DEC p-m error", 	         	 		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "PAR",         "parallax", 	                         		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "PAR_ERR",     "parallax error", 	                 		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "CHISQ_POS",   "astrometry analysis chisq", 	         		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "CHISQ_PM",    "astrometry analysis chisq", 	         		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "CHISQ_PAP",   "astrometry analysis chisq", 	         		  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "J", "MEAN_EPOCH",  "mean epoch (PM-PAR ref)", 	         		  "", 1.0, 0.00);
-    gfits_define_bintable_column (&theader, "J", "TIME_RANGE",  "mean epoch (PM-PAR ref)", 	         		  "", 1.0, 0.00);
-    gfits_define_bintable_column (&theader, "E", "STARGAL_SEP", "star/galaxy separator",                		  "", 1.0, 0.0);   
-    gfits_define_bintable_column (&theader, "I", "NUMBER_POS",  "number of detections used for astrometry", 	          "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "I", "NMEASURE",    "number of psf measurements", 	                          "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "I", "NMISSING",    "number of missings", 	          	                  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "I", "NEXTEND",     "number of extended measurements", 	                  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "J", "OFF_MEASURE", "offset to first psf measurement", 	 	          "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "J", "OFF_MISSING", "offset to first missing obs", 	         	          "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "E", "REF_COLOR",   "reference color", 	                                  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "J", "FLAGS",       "average object flags (star; ghost; etc)", 	          "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "J", "PHOTFLAGS_U", "upper bit of 2 bit summary of per-measure photflags", 	  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "J", "PHOTFLAGS_L", "lower bit of 2 bit summary of per-measure photflags", 	  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "J", "OBJ_ID",      "unique ID for object in table", 	                  "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "J", "CAT_ID",      "unique ID for table in which object was first realized", "", 1.0, 0.0);
-    gfits_define_bintable_column (&theader, "K", "EXT_ID",      "external ID for object (eg PSPS objID)", 	          "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "D", "RA",             "RA", 	         	  	         	  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "D", "DEC",            "DEC", 	         	 	         	  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "RA_ERR",         "RA error", 	         	         		  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "DEC_ERR",        "DEC error", 	         	         	  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "U_RA",           "RA*cos(D) proper-motion", 	         		  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "U_DEC",          "DEC proper-motion", 	         	 	  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "V_RA_ERR",       "RA*cos(D) p-m error", 	         	 	  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "V_DEC_ERR",      "DEC p-m error", 	         	 		  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "PAR",            "parallax", 	                         		  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "PAR_ERR",        "parallax error", 	                 		  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "CHISQ_POS",      "astrometry analysis chisq", 	         	  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "CHISQ_PM",       "astrometry analysis chisq", 	         	  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "CHISQ_PAP",      "astrometry analysis chisq", 	         	  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "J", "MEAN_EPOCH",     "mean epoch (PM-PAR ref)", 	         		  "", 1.0, 0.00);
+    gfits_define_bintable_column (&theader, "J", "TIME_RANGE",     "mean epoch (PM-PAR ref)", 	         		  "", 1.0, 0.00);
+    gfits_define_bintable_column (&theader, "E", "STARGAL_SEP",    "star/galaxy separator",                		  "", 1.0, 0.0);   
+    gfits_define_bintable_column (&theader, "I", "NUMBER_POS",     "number of detections used for astrometry", 	          "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "I", "NMEASURE",       "number of psf measurements", 	                  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "I", "NMISSING",       "number of missings", 	          	          "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "I", "NEXTEND",        "number of extended measurements", 	                  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "J", "OFF_MEASURE",    "offset to first psf measurement", 	 	          "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "J", "OFF_MISSING",    "offset to first missing obs", 	         	  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "REF_COLOR_BLUE", "reference color", 	                                  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "E", "REF_COLOR_RED",  "reference color", 	                                  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "J", "FLAGS",          "average object flags (star; ghost; etc)", 	          "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "J", "PHOTFLAGS_U",    "upper bit of 2 bit summary of per-measure photflags", "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "J", "PHOTFLAGS_L",    "lower bit of 2 bit summary of per-measure photflags", "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "J", "OBJ_ID",         "unique ID for object in table", 	                  "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "J", "CAT_ID",         "unique ID for table in which object was first realized", "", 1.0, 0.0);
+    gfits_define_bintable_column (&theader, "K", "EXT_ID",         "external ID for object (eg PSPS objID)", 	          "", 1.0, 0.0);
 
     // generate the output array that carries the data
@@ -510,5 +514,6 @@
     int      *measureOffset ; ALLOCATE (measureOffset , int     , catalog->Naverage);
     int      *missingOffset ; ALLOCATE (missingOffset , int     , catalog->Naverage);
-    float    *refColor      ; ALLOCATE (refColor      , float   , catalog->Naverage);
+    float    *refColorBlue  ; ALLOCATE (refColorBlue  , float   , catalog->Naverage);
+    float    *refColorRed   ; ALLOCATE (refColorRed   , float   , catalog->Naverage);
     int      *flags         ; ALLOCATE (flags         , int     , catalog->Naverage);
     int      *photFlagsUpper; ALLOCATE (photFlagsUpper, int     , catalog->Naverage);
@@ -543,5 +548,6 @@
       measureOffset[i]   = average[i].measureOffset   ; 
       missingOffset[i]   = average[i].missingOffset   ; 
-      refColor[i]    = average[i].refColor    ;  
+      refColorBlue[i]    = average[i].refColorBlue    ;  
+      refColorRed[i]     = average[i].refColorRed     ;  
       flags[i]           = average[i].flags           ;
       photFlagsUpper[i]  = average[i].photFlagsUpper  ;
@@ -553,33 +559,34 @@
 
     // add the columns to the output array
-    gfits_set_bintable_column (&theader, &ftable, "RA",          R,               catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "DEC",         D,               catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "RA_ERR",      dR,              catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "DEC_ERR",     dD,              catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "U_RA",        uR,              catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "U_DEC",       uD,              catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "V_RA_ERR",    duR,             catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "V_DEC_ERR",   duD,             catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "PAR",         P,               catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "PAR_ERR",     dP,              catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "CHISQ_POS",   ChiSqAve,        catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "CHISQ_PM",    ChiSqPM,         catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "CHISQ_PAP",   ChiSqPar,        catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "MEAN_EPOCH",  Tmean,           catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "TIME_RANGE",  Trange,          catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "STARGAL_SEP", stargal,         catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "NUMBER_POS",  Npos,            catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "NMEASURE",    Nmeasure,        catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "NMISSING",    Nmissing,        catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "NEXTEND",     Nextend,         catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "OFF_MEASURE", measureOffset,   catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "OFF_MISSING", missingOffset,   catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "REF_COLOR",   refColor,        catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "FLAGS",       flags,           catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "PHOTFLAGS_U", photFlagsUpper,  catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "PHOTFLAGS_L", photFlagsLower,  catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "OBJ_ID",      objID,           catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "CAT_ID",      catID,           catalog->Naverage);
-    gfits_set_bintable_column (&theader, &ftable, "EXT_ID",      extID,           catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "RA",             R,               catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "DEC",            D,               catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "RA_ERR",         dR,              catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "DEC_ERR",        dD,              catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "U_RA",           uR,              catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "U_DEC",          uD,              catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "V_RA_ERR",       duR,             catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "V_DEC_ERR",      duD,             catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "PAR",            P,               catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "PAR_ERR",        dP,              catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "CHISQ_POS",      ChiSqAve,        catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "CHISQ_PM",       ChiSqPM,         catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "CHISQ_PAP",      ChiSqPar,        catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "MEAN_EPOCH",     Tmean,           catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "TIME_RANGE",     Trange,          catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "STARGAL_SEP",    stargal,         catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "NUMBER_POS",     Npos,            catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "NMEASURE",       Nmeasure,        catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "NMISSING",       Nmissing,        catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "NEXTEND",        Nextend,         catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "OFF_MEASURE",    measureOffset,   catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "OFF_MISSING",    missingOffset,   catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "REF_COLOR_BLUE", refColorBlue,    catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "REF_COLOR_RED",  refColorRed,     catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "FLAGS",          flags,           catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "PHOTFLAGS_U",    photFlagsUpper,  catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "PHOTFLAGS_L",    photFlagsLower,  catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "OBJ_ID",         objID,           catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "CAT_ID",         catID,           catalog->Naverage);
+    gfits_set_bintable_column (&theader, &ftable, "EXT_ID",         extID,           catalog->Naverage);
 
     free (R);
@@ -605,5 +612,6 @@
     free (measureOffset);
     free (missingOffset);
-    free (refColor);
+    free (refColorBlue);
+    free (refColorRed);
     free (flags);
     free (photFlagsUpper);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/FitChip.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/FitChip.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/FitChip.c	(revision 37006)
@@ -112,18 +112,33 @@
   }
 
-  int Ncolor = 0;
+  int Ncolor;
+  float colorMedian;
   float *colorList = NULL;
   ALLOCATE (colorList, float, Nmatch);
 
+  // calculate the median blue color
+  Ncolor = 0;
   for (i = 0; i < Nmatch; i++) {
     if (!raw[i].mask) continue;
-    if (!isnan(ref[i].Color)) {
-      colorList[Ncolor] = ref[i].Color;
-      Ncolor ++;
-    }
+    if (isnan(ref[i].ColorBlue)) continue;
+    colorList[Ncolor] = ref[i].ColorBlue;
+    Ncolor ++;
   }
   fsort (colorList, Ncolor);
-  float colorMedian = (Ncolor > 0) ? colorList[(int)(0.5*Ncolor)] : NAN;
-  image[0].refColor = colorMedian;
+  colorMedian = (Ncolor > 0) ? colorList[(int)(0.5*Ncolor)] : NAN;
+  image[0].refColorBlue = colorMedian;
+
+  // calculate the median red color
+  Ncolor = 0;
+  for (i = 0; i < Nmatch; i++) {
+    if (!raw[i].mask) continue;
+    if (isnan(ref[i].ColorRed)) continue;
+    colorList[Ncolor] = ref[i].ColorRed;
+    Ncolor ++;
+  }
+  fsort (colorList, Ncolor);
+  colorMedian = (Ncolor > 0) ? colorList[(int)(0.5*Ncolor)] : NAN;
+  image[0].refColorRed = colorMedian;
+
   free (colorList);
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/ImageOps.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/ImageOps.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/ImageOps.c	(revision 37006)
@@ -345,5 +345,5 @@
 */
 
-float getColor (off_t meas, int cat) {
+float getColorBlue (off_t meas, int cat) {
 
   off_t i;
@@ -351,5 +351,14 @@
   i = MeasureToImage[cat][meas];
   if (i == -1) return (NAN);
-  return (image[i].refColor);
+  return (image[i].refColorBlue);
+}
+
+float getColorRed (off_t meas, int cat) {
+
+  off_t i;
+
+  i = MeasureToImage[cat][meas];
+  if (i == -1) return (NAN);
+  return (image[i].refColorRed);
 }
 
@@ -803,6 +812,9 @@
     ref[i].dPos = GetAstromErrorTiny (&measure[0], ERROR_MODE_POS);
 
-    if ((DCR_NSEC_POS >= 0) && (DCR_NSEC_NEG >= -1)) {
-      ref[i].Color = catalog[c].secfilt[n*Nsecfilt + DCR_NSEC_POS].M - catalog[c].secfilt[n*Nsecfilt + DCR_NSEC_NEG].M;
+    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;
+    }
+    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;
     }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/UpdateObjectOffsets.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/UpdateObjectOffsets.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/UpdateObjectOffsets.c	(revision 37006)
@@ -153,6 +153,9 @@
     // XXX note that the above pass in the flag as decimal -- also note that args.c cannot handle 0xHEX values
 
-    if (DCR_COLOR_POS && DCR_COLOR_NEG) {
-      strextend (command, "-dcr-color %s %s", DCR_COLOR_POS, DCR_COLOR_NEG); 
+    if (DCR_BLUE_COLOR_POS && DCR_BLUE_COLOR_NEG) {
+      strextend (command, "-dcr-blue-color %s %s", DCR_BLUE_COLOR_POS, DCR_BLUE_COLOR_NEG); 
+    }
+    if (DCR_RED_COLOR_POS && DCR_RED_COLOR_NEG) {
+      strextend (command, "-dcr-red-color %s %s", DCR_RED_COLOR_POS, DCR_RED_COLOR_NEG); 
     }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/UpdateObjects.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/UpdateObjects.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/UpdateObjects.c	(revision 37006)
@@ -10,5 +10,6 @@
 static double *T;
 static double *dT;
-static double *C;
+static double *C_blue;
+static double *C_red;
 
 void initObjectData (Catalog *catalog, int Ncatalog) {
@@ -38,5 +39,6 @@
   ALLOCATE (pY, double, MAX (1, Nmax));
 
-  ALLOCATE (C, double, MAX (1, Nmax));
+  ALLOCATE (C_blue, double, MAX (1, Nmax));
+  ALLOCATE (C_red,  double, MAX (1, Nmax));
 }  
 
@@ -58,5 +60,6 @@
   free (pY);
 
-  free (C);
+  free (C_blue);
+  free (C_red);
 }  
 
@@ -66,5 +69,5 @@
 
   off_t j, k, m;
-  int i, N, Nc, Nsecfilt, mode, result, status, XVERB;
+  int i, N, NcBlue, NcRed, Nsecfilt, mode, result, status, XVERB;
   StatType statsR, statsD;
   Coords coords;
@@ -130,5 +133,6 @@
       }
 
-      Nc = 0;
+      NcBlue = 0;
+      NcRed = 0;
       N = 0;
       m = catalog[i].average[j].measureOffset;
@@ -225,8 +229,13 @@
 
 	if (setRefColor) {
-	  float color = getColor (m+k, i);
-	  if (!isnan(color)) {
-	    C[Nc] = color;
-	    Nc++;
+	  float colorBlue = getColorBlue (m+k, i);
+	  if (!isnan(colorBlue)) {
+	    C_blue[NcBlue] = colorBlue;
+	    NcBlue++;
+	  }
+	  float colorRed = getColorRed (m+k, i);
+	  if (!isnan(colorRed)) {
+	    C_red[NcRed] = colorRed;
+	    NcRed++;
 	  }
 	}
@@ -360,7 +369,11 @@
 
       if (setRefColor) {
-	dsort (C, Nc);
-	float colorMedian = (Nc > 0) ? C[(int)(0.5*Nc)] : NAN;
-	catalog[i].average[j].refColor = colorMedian;
+	float colorMedian;
+	dsort (C_blue, NcBlue);
+	colorMedian = (NcBlue > 0) ? C_blue[(int)(0.5*NcBlue)] : NAN;
+	catalog[i].average[j].refColorBlue = colorMedian;
+	dsort (C_red, NcRed);
+	colorMedian = (NcRed > 0) ? C_red[(int)(0.5*NcRed)] : NAN;
+	catalog[i].average[j].refColorRed = colorMedian;
       }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/args.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/args.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/args.c	(revision 37006)
@@ -294,11 +294,23 @@
   }
 
-  DCR_COLOR_POS = NULL;
-  DCR_COLOR_NEG = NULL;
-  if ((N = get_argument (argc, argv, "-dcr-color"))) {
-    remove_argument (N, &argc, argv);
-    DCR_COLOR_POS = strcreate(argv[N]);
-    remove_argument (N, &argc, argv);
-    DCR_COLOR_NEG = strcreate(argv[N]);
+  // eg g - r or r - i
+  DCR_BLUE_COLOR_POS = NULL;
+  DCR_BLUE_COLOR_NEG = NULL;
+  if ((N = get_argument (argc, argv, "-dcr-blue-color"))) {
+    remove_argument (N, &argc, argv);
+    DCR_BLUE_COLOR_POS = strcreate(argv[N]);
+    remove_argument (N, &argc, argv);
+    DCR_BLUE_COLOR_NEG = strcreate(argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+
+  // eg, z - y or i - z
+  DCR_RED_COLOR_POS = NULL;
+  DCR_RED_COLOR_NEG = NULL;
+  if ((N = get_argument (argc, argv, "-dcr-red-color"))) {
+    remove_argument (N, &argc, argv);
+    DCR_RED_COLOR_POS = strcreate(argv[N]);
+    remove_argument (N, &argc, argv);
+    DCR_RED_COLOR_NEG = strcreate(argv[N]);
     remove_argument (N, &argc, argv);
   }
@@ -696,11 +708,20 @@
   }
 
-  DCR_COLOR_POS = NULL;
-  DCR_COLOR_NEG = NULL;
-  if ((N = get_argument (argc, argv, "-dcr-color"))) {
-    remove_argument (N, &argc, argv);
-    DCR_COLOR_POS = strcreate(argv[N]);
-    remove_argument (N, &argc, argv);
-    DCR_COLOR_NEG = strcreate(argv[N]);
+  DCR_BLUE_COLOR_POS = NULL;
+  DCR_BLUE_COLOR_NEG = NULL;
+  if ((N = get_argument (argc, argv, "-dcr-blue-color"))) {
+    remove_argument (N, &argc, argv);
+    DCR_BLUE_COLOR_POS = strcreate(argv[N]);
+    remove_argument (N, &argc, argv);
+    DCR_BLUE_COLOR_NEG = strcreate(argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+  DCR_RED_COLOR_POS = NULL;
+  DCR_RED_COLOR_NEG = NULL;
+  if ((N = get_argument (argc, argv, "-dcr-red-color"))) {
+    remove_argument (N, &argc, argv);
+    DCR_RED_COLOR_POS = strcreate(argv[N]);
+    remove_argument (N, &argc, argv);
+    DCR_RED_COLOR_NEG = strcreate(argv[N]);
     remove_argument (N, &argc, argv);
   }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/initialize.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/initialize.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/initialize.c	(revision 37006)
@@ -8,6 +8,6 @@
   if (RELASTRO_OP == OP_MERGE_SOURCE) return;
 
-  if (DCR_COLOR_POS)  fprintf (stderr, "DCR_COLOR_POS:  %s\n", DCR_COLOR_POS);
-  if (DCR_COLOR_NEG)  fprintf (stderr, "DCR_COLOR_NEG:  %s\n", DCR_COLOR_NEG);
+  if (DCR_BLUE_COLOR_POS)  fprintf (stderr, "DCR_BLUE_COLOR_POS:  %s - %s\n", DCR_BLUE_COLOR_POS, DCR_BLUE_COLOR_NEG);
+  if (DCR_BLUE_COLOR_POS)  fprintf (stderr, "DCR_BLUE_COLOR_POS:  %s - %s\n", DCR_BLUE_COLOR_POS, DCR_BLUE_COLOR_NEG);
 
   if (PHOTCODE_KEEP_LIST)  fprintf (stderr, "PHOTCODE_KEEP_LIST:  %s\n", PHOTCODE_KEEP_LIST);
@@ -23,20 +23,40 @@
   photcodesGroupB = ParsePhotcodeList (PHOTCODE_B_LIST,     &NphotcodesGroupB, TRUE);
 
-  DCR_NSEC_POS = DCR_NSEC_NEG = -1;
-  if (DCR_COLOR_POS) {
-    DCR_PHOTCODE_POS = GetPhotcodebyName (DCR_COLOR_POS);
-    if (!DCR_PHOTCODE_POS) {
-      fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", DCR_COLOR_POS);
+  // blue color elements
+  DCR_BLUE_NSEC_POS = DCR_BLUE_NSEC_NEG = -1;
+  if (DCR_BLUE_COLOR_POS) {
+    DCR_BLUE_PHOTCODE_POS = GetPhotcodebyName (DCR_BLUE_COLOR_POS);
+    if (!DCR_BLUE_PHOTCODE_POS) {
+      fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", DCR_BLUE_COLOR_POS);
       exit (1);
     }
-    DCR_NSEC_POS = GetPhotcodeNsec (DCR_PHOTCODE_POS[0].code);
+    DCR_BLUE_NSEC_POS = GetPhotcodeNsec (DCR_BLUE_PHOTCODE_POS[0].code);
   }
-  if (DCR_COLOR_NEG) {
-    DCR_PHOTCODE_NEG = GetPhotcodebyName (DCR_COLOR_NEG);
-    if (!DCR_PHOTCODE_NEG) {
-      fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", DCR_COLOR_NEG);
+  if (DCR_BLUE_COLOR_NEG) {
+    DCR_BLUE_PHOTCODE_NEG = GetPhotcodebyName (DCR_BLUE_COLOR_NEG);
+    if (!DCR_BLUE_PHOTCODE_NEG) {
+      fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", DCR_BLUE_COLOR_NEG);
       exit (1);
     }
-    DCR_NSEC_NEG = GetPhotcodeNsec (DCR_PHOTCODE_NEG[0].code);
+    DCR_BLUE_NSEC_NEG = GetPhotcodeNsec (DCR_BLUE_PHOTCODE_NEG[0].code);
+  }
+
+  // red color elements
+  DCR_RED_NSEC_POS = DCR_RED_NSEC_NEG = -1;
+  if (DCR_RED_COLOR_POS) {
+    DCR_RED_PHOTCODE_POS = GetPhotcodebyName (DCR_RED_COLOR_POS);
+    if (!DCR_RED_PHOTCODE_POS) {
+      fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", DCR_RED_COLOR_POS);
+      exit (1);
+    }
+    DCR_RED_NSEC_POS = GetPhotcodeNsec (DCR_RED_PHOTCODE_POS[0].code);
+  }
+  if (DCR_RED_COLOR_NEG) {
+    DCR_RED_PHOTCODE_NEG = GetPhotcodebyName (DCR_RED_COLOR_NEG);
+    if (!DCR_RED_PHOTCODE_NEG) {
+      fprintf (stderr, "ERROR: photcode %s not found in photcode table\n", DCR_RED_COLOR_NEG);
+      exit (1);
+    }
+    DCR_RED_NSEC_NEG = GetPhotcodeNsec (DCR_RED_PHOTCODE_NEG[0].code);
   }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/launch_region_hosts.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/launch_region_hosts.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/launch_region_hosts.c	(revision 37006)
@@ -81,6 +81,9 @@
     if (ExcludeBogus)       strextend (command, "-exclude-bogus %f", ExcludeBogusRadius);
 
-    if (DCR_COLOR_POS && DCR_COLOR_NEG) {
-      strextend (command, "-dcr-color %s %s", DCR_COLOR_POS, DCR_COLOR_NEG); 
+    if (DCR_BLUE_COLOR_POS && DCR_BLUE_COLOR_NEG) {
+      strextend (command, "-dcr-blue-color %s %s", DCR_BLUE_COLOR_POS, DCR_BLUE_COLOR_NEG); 
+    }
+    if (DCR_RED_COLOR_POS && DCR_RED_COLOR_NEG) {
+      strextend (command, "-dcr-red-color %s %s", DCR_RED_COLOR_POS, DCR_RED_COLOR_NEG); 
     }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/load_catalogs.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/load_catalogs.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/load_catalogs.c	(revision 37006)
@@ -171,6 +171,9 @@
     if (ExcludeBogus)  strextend (command, "-exclude-bogus %f", ExcludeBogusRadius);
     
-    if (DCR_COLOR_POS && DCR_COLOR_NEG) {
-      strextend (command, "-dcr-color %s %s", DCR_COLOR_POS, DCR_COLOR_NEG); 
+    if (DCR_BLUE_COLOR_POS && DCR_BLUE_COLOR_NEG) {
+      strextend (command, "-dcr-blue-color %s %s", DCR_BLUE_COLOR_POS, DCR_BLUE_COLOR_NEG); 
+    }
+    if (DCR_RED_COLOR_POS && DCR_RED_COLOR_NEG) {
+      strextend (command, "-dcr-red-color %s %s", DCR_RED_COLOR_POS, DCR_RED_COLOR_NEG); 
     }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/markObjects.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/markObjects.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/markObjects.c	(revision 37006)
@@ -8,6 +8,6 @@
   // How strongly do I own this object?
   for (i = 0; i < Ncatalog; i++) {
-    ALLOCATE (catalog[i].nOwn, int, catalog[i].Naverage);
-    memset (catalog[i].nOwn, 0, catalog[i].Naverage*sizeof(int));
+    ALLOCATE (catalog[i].nOwn_t, int, catalog[i].Naverage);
+    memset (catalog[i].nOwn_t, 0, catalog[i].Naverage*sizeof(int));
     for (j = 0; j < catalog[i].Naverage; j++) {
       int nOwn = 0;
@@ -17,5 +17,5 @@
 	nOwn ++;
       }
-      catalog[i].nOwn[j] = nOwn;
+      catalog[i].nOwn_t[j] = nOwn;
     }
   }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/share_mean_pos.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/share_mean_pos.c	(revision 37005)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/share_mean_pos.c	(revision 37006)
@@ -33,5 +33,5 @@
       // XXX : sky objects without missing detections
       // XXX watch out for detections which are not associated with an image (REF)
-      if (catalog[i].nOwn[j] == catalog[i].average[j].Nmeasure) continue;
+      if (catalog[i].nOwn_t[j] == catalog[i].average[j].Nmeasure) continue;
 
       set_mean_pos (&meanpos[Nmeanpos], &catalog[i].average[j]);
