Index: /trunk/psModules/src/astrom/pmAstrometryWCS.c
===================================================================
--- /trunk/psModules/src/astrom/pmAstrometryWCS.c	(revision 34270)
+++ /trunk/psModules/src/astrom/pmAstrometryWCS.c	(revision 34271)
@@ -565,4 +565,5 @@
     // free an existing toFPA structure
     psFree (chip->toFPA);
+    assert (chip->toFPA == NULL);
     chip->toFPA = toFPA;
 
@@ -571,4 +572,5 @@
 
     psFree (chip->fromFPA);
+    assert (chip->fromFPA == NULL);
     chip->fromFPA = psPlaneTransformInvert(NULL, chip->toFPA, *region, 50);
     psFree (region);
@@ -707,4 +709,5 @@
         psError(PS_ERR_UNKNOWN, false, "Unable to solve for TPA center.");
         psFree (toTPA);
+        psFree (tpa1);
         psFree (wcs);
         return NULL;
Index: /trunk/psModules/src/objects/pmSourceIO.c
===================================================================
--- /trunk/psModules/src/objects/pmSourceIO.c	(revision 34270)
+++ /trunk/psModules/src/objects/pmSourceIO.c	(revision 34271)
@@ -1226,5 +1226,5 @@
 static bool pmReadoutReadXSRC(pmFPAfile *file, char *exttype, psMetadata *hduHeader, psString xsrcname, psArray *sources, long *sourceIndex) 
 {
-    if (!psFitsMoveExtName (file->fits, xsrcname)) {
+    if (!psFitsMoveExtNameClean (file->fits, xsrcname)) {
         psWarning ("cannot find xsrc extension %s in %s, skipping", xsrcname, file->filename);
         return false;
@@ -1262,5 +1262,5 @@
 static bool pmReadoutReadXFIT(pmFPAfile *file, char *exttype, psMetadata *hduHeader, psString extname, psArray *sources, long *sourceIndex) 
 {
-    if (!psFitsMoveExtName (file->fits, extname)) {
+    if (!psFitsMoveExtNameClean (file->fits, extname)) {
         psWarning ("cannot find xfit extension %s in %s, skipping", extname, file->filename);
         return false;
@@ -1297,5 +1297,5 @@
 static bool pmReadoutReadXRAD(pmFPAfile *file, pmReadout *readout, char *exttype, psMetadata *hduHeader, psString extname, psArray *sources, long *sourceIndex) 
 {
-    if (!psFitsMoveExtName (file->fits, extname)) {
+    if (!psFitsMoveExtNameClean (file->fits, extname)) {
         psWarning ("cannot find xrad extension %s in %s, skipping", extname, file->filename);
         return false;
Index: /trunk/psModules/src/objects/pmSourceIO_CMF.c.in
===================================================================
--- /trunk/psModules/src/objects/pmSourceIO_CMF.c.in	(revision 34270)
+++ /trunk/psModules/src/objects/pmSourceIO_CMF.c.in	(revision 34271)
@@ -703,5 +703,4 @@
     psMetadata *row;
     psF32 *PAR, *dPAR;
-    psEllipseAxes axes;
     psF32 xPos, yPos;
     psF32 xErr, yErr;
@@ -766,6 +765,4 @@
             xErr = dPAR[PM_PAR_XPOS];
             yErr = dPAR[PM_PAR_YPOS];
-
-            axes = pmPSF_ModelToAxes (PAR, 20.0, model->type);
 
 	    float kronFlux = source->moments ? source->moments->KronFlux : NAN;
@@ -805,10 +802,20 @@
 		psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_THETA_ERR",    0, "EXT orientation angle (error)",           dPAR[PM_PAR_THETA]);
 	    } else {
-		psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MAJ",    0, "EXT width (major axis), length for trail", axes.major);
-		psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MIN",    0, "EXT width (minor axis), sigma for trail",  axes.minor);
-		psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_THETA",        0, "EXT orientation angle",                    axes.theta);
-		psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MAJ_ERR",0, "EXT width error (major axis)",            dPAR[PM_PAR_LENGTH]);
-		psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MIN_ERR",0, "EXT width error (minor axis)",            dPAR[PM_PAR_SIGMA]);
-		psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_THETA_ERR",    0, "EXT orientation angle (error)",           dPAR[PM_PAR_THETA]);
+		if (!isfinite(PAR[PM_PAR_SXX]) || !isfinite(PAR[PM_PAR_SYY])  || !isfinite(PAR[PM_PAR_SXY])) {
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MAJ",     0, "EXT width (SXX, isnan)", PAR[PM_PAR_SXX]);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MIN",     0, "EXT width (SYY, isnan)", PAR[PM_PAR_SYY]);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_THETA",         0, "EXT angle (SXY, isnan)", PAR[PM_PAR_SXY]);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MAJ_ERR", 0, "EXT width err (SXX, isnan)", dPAR[PM_PAR_SXX]);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MIN_ERR", 0, "EXT width err (SYY, isnan)", dPAR[PM_PAR_SYY]);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_THETA_ERR",     0, "EXT angle err (SXY, isnan)", dPAR[PM_PAR_SXY]);
+		} else {
+		    psEllipseAxes axes = pmPSF_ModelToAxes (PAR, 20.0, model->type);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MAJ",    0, "EXT width (major axis), length for trail", axes.major);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MIN",    0, "EXT width (minor axis), sigma for trail",  axes.minor);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_THETA",        0, "EXT orientation angle",                    axes.theta);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MAJ_ERR",0, "EXT width error (major axis)",            dPAR[PM_PAR_SXX]);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MIN_ERR",0, "EXT width error (minor axis)",            dPAR[PM_PAR_SYY]);
+		    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_THETA_ERR",    0, "EXT orientation angle (error)",           dPAR[PM_PAR_SXY]);
+		}
 	    }
 
