Index: /branches/eam_branches/ipp-20150326/psModules/src/detrend/pmDetrendDB.c
===================================================================
--- /branches/eam_branches/ipp-20150326/psModules/src/detrend/pmDetrendDB.c	(revision 38030)
+++ /branches/eam_branches/ipp-20150326/psModules/src/detrend/pmDetrendDB.c	(revision 38031)
@@ -356,12 +356,15 @@
     psTrace("psModules.detrend", 5, "detrend file: %s\n", result);
 
+    // XXX: A somewhat hacked bit of code to force the analysis to use a specific version of the detrend file
     char *is_nebulous = strstr(result,"neb://");
     if (is_nebulous) { // This file matches the nebulous string
       psString truncated = psStringCopy(is_nebulous + 6);
       //      printf("A: %s %s\n",result,truncated);
+
       psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes,"PPIMAGE");
-      psMetadata *detloc = psMetadataLookupMetadata(NULL, recipe, "DETREND.LOCATIONS");
+      psMetadata *detloc = psMetadataLookupMetadata(&status, recipe, "DETREND.LOCATIONS");
+
       if (detloc) { // This exists, so we have the information.
-	psString location = psMetadataLookupStr(NULL, detloc,classID);
+	psString location = psMetadataLookupStr(&status, detloc, classID);
 	//	printf("B: %s %s\n", classID,location);
 	if (location) { // Found a location
Index: /branches/eam_branches/ipp-20150326/psModules/src/objects/pmModelFuncs.h
===================================================================
--- /branches/eam_branches/ipp-20150326/psModules/src/objects/pmModelFuncs.h	(revision 38030)
+++ /branches/eam_branches/ipp-20150326/psModules/src/objects/pmModelFuncs.h	(revision 38031)
@@ -36,16 +36,19 @@
 
 typedef enum {
-    PM_MODEL_STATUS_NONE           = 0x000, ///< model fit not yet attempted, no other info
-    PM_MODEL_STATUS_FITTED         = 0x001, ///< model fit completed
-    PM_MODEL_STATUS_NONCONVERGE    = 0x002, ///< model fit did not converge
-    PM_MODEL_STATUS_OFFIMAGE       = 0x004, ///< model fit drove out of range
-    PM_MODEL_STATUS_BADARGS        = 0x008, ///< model fit called with invalid args
-    PM_MODEL_STATUS_LIMITS         = 0x010, ///< model parameters hit limits
-    PM_MODEL_STATUS_WEAK_FIT       = 0x020, ///< model fit met loose tolerance, but not tight tolerance
-    PM_MODEL_STATUS_NAN_CHISQ      = 0x040, ///< model fit failed with a NAN chisq 
-    PM_MODEL_SERSIC_PCM_FAIL_GUESS = 0x080, ///< sersic model fit failed on the initial moments-based guess
-    PM_MODEL_SERSIC_PCM_FAIL_GRID  = 0x100, ///< sersic model fit failed on the grid search
-    PM_MODEL_PCM_FAIL_GUESS        = 0x200, ///< non-sersic model fit failed on the initial moments-based guess
-    PM_MODEL_BEST_FIT              = 0x400, ///< this model was the best fit and was subtracted
+    PM_MODEL_STATUS_NONE           = 0x0000, ///< model fit not yet attempted, no other info
+    PM_MODEL_STATUS_FITTED         = 0x0001, ///< model fit completed
+    PM_MODEL_STATUS_NONCONVERGE    = 0x0002, ///< model fit did not converge
+    PM_MODEL_STATUS_OFFIMAGE       = 0x0004, ///< model fit drove out of range
+    PM_MODEL_STATUS_BADARGS        = 0x0008, ///< model fit called with invalid args
+    PM_MODEL_STATUS_LIMITS         = 0x0010, ///< model parameters hit limits
+    PM_MODEL_STATUS_WEAK_FIT       = 0x0020, ///< model fit met loose tolerance, but not tight tolerance
+    PM_MODEL_STATUS_NAN_CHISQ      = 0x0040, ///< model fit failed with a NAN chisq 
+    PM_MODEL_SERSIC_PCM_FAIL_GUESS = 0x0080, ///< sersic model fit failed on the initial moments-based guess
+    PM_MODEL_SERSIC_PCM_FAIL_GRID  = 0x0100, ///< sersic model fit failed on the grid search
+    PM_MODEL_PCM_FAIL_GUESS        = 0x0200, ///< non-sersic model fit failed on the initial moments-based guess
+    PM_MODEL_BEST_FIT              = 0x0400, ///< this model was the best fit and was subtracted
+    PM_MODEL_STATUS_NAN_SHAPE      = 0x0800, ///< model ellipse parameters do not transform to valid ellipse
+    PM_MODEL_STATUS_NAN_SHAPE_ERR  = 0x1000, ///< model ellipse parameters errors do not transform to valid ellipse
+    PM_MODEL_STATUS_FAIL_SHAPE_ERR = 0x2000, ///< could not find an MC solution for ellipse parameter errors
 } pmModelStatus;
 
Index: /branches/eam_branches/ipp-20150326/psModules/src/objects/pmSourceIO_CMF.c.in
===================================================================
--- /branches/eam_branches/ipp-20150326/psModules/src/objects/pmSourceIO_CMF.c.in	(revision 38030)
+++ /branches/eam_branches/ipp-20150326/psModules/src/objects/pmSourceIO_CMF.c.in	(revision 38031)
@@ -1272,4 +1272,7 @@
         dPAR[PM_PAR_SXY] = psMetadataLookupF32(&status, row, "EXT_THETA_ERR");
 
+	// other parameters that we need to read
+        PAR[PM_PAR_SKY] = psMetadataLookupF32(&status, row, "SKY_EXT");
+
         if (modelType == extModelType) {
             // The software that created this source picked this model as the best of the fits. 
Index: /branches/eam_branches/ipp-20150326/psModules/src/objects/pmSourceOutputs.c
===================================================================
--- /branches/eam_branches/ipp-20150326/psModules/src/objects/pmSourceOutputs.c	(revision 38030)
+++ /branches/eam_branches/ipp-20150326/psModules/src/objects/pmSourceOutputs.c	(revision 38031)
@@ -60,18 +60,32 @@
     // we need a measure of the image quality (FWHM) for this image, in order to get the positional errors
     *fwhmMajor = psMetadataLookupF32(&status1, readout->analysis, "FWHM_MAJ");
-    if (!status1) {
-	*fwhmMajor = psMetadataLookupF32(&status1, readout->analysis, "IQ_FW1");
-	if (!status1) {
-	    *fwhmMajor = 5.0; // XXX just a guess!
-	}
-    }
+    if (status1) goto got_major;
+
+    *fwhmMajor = psMetadataLookupF32(&status1, header, "FWHM_MAJ");
+    if (status1) goto got_major;
+
+    *fwhmMajor = psMetadataLookupF32(&status1, readout->analysis, "IQ_FW1");
+    if (status1) goto got_major;
+
+    *fwhmMajor = psMetadataLookupF32(&status1, header, "IQ_FW1");
+    if (status1) goto got_major;
+
+    *fwhmMajor = 5.0; // XXX just a guess!
+
+    got_major:
+
     *fwhmMinor = psMetadataLookupF32(&status1, readout->analysis, "FWHM_MIN");
-    if (!status1) {
-	*fwhmMinor = psMetadataLookupF32(&status1, readout->analysis, "IQ_FW2");
-	if (!status1) {
-	    *fwhmMinor = 5.0; // XXX just a guess!
-	}
-    }
-
+    if (status1) goto got_minor;
+    *fwhmMinor = psMetadataLookupF32(&status1, header, "FWHM_MIN");
+    if (status1) goto got_minor;
+
+    *fwhmMinor = psMetadataLookupF32(&status1, readout->analysis, "IQ_FW2");
+    if (status1) goto got_minor;
+    *fwhmMinor = psMetadataLookupF32(&status1, header, "IQ_FW2");
+    if (status1) goto got_minor;
+
+    *fwhmMinor = 5.0; // XXX just a guess!
+
+    got_minor:
     return true;
 
