Index: /trunk/psModules/src/objects/pmSourceIO_PS1_DEV_0.c
===================================================================
--- /trunk/psModules/src/objects/pmSourceIO_PS1_DEV_0.c	(revision 12703)
+++ /trunk/psModules/src/objects/pmSourceIO_PS1_DEV_0.c	(revision 12704)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-03-30 21:12:56 $
+ *  @version $Revision: 1.6 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-03-31 03:02:05 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -75,5 +75,11 @@
 	    shape.sy  = PAR[PM_PAR_SYY];
 	    shape.sxy = PAR[PM_PAR_SXY];
-	    axes = psEllipseShapeToAxes (shape, 20.0);
+	    if ((shape.sx == 0) || (shape.sy == 0)) {
+		axes.major = 0.0;
+		axes.minor = 0.0;
+		axes.theta = 0.0;
+	    } else {
+		axes = psEllipseShapeToAxes (shape, 20.0);
+	    }
 	} else {
 	    xPos = source->peak->xf;
@@ -194,15 +200,26 @@
         source->errMag    = psMetadataLookupF32 (&status, row, "PSF_INST_MAG_ERR");
 
-        shape = psEllipseAxesToShape (axes);
-
-        PAR[PM_PAR_SXX] = shape.sx;
-        PAR[PM_PAR_SYY] = shape.sy;
-        PAR[PM_PAR_SXY] = shape.sxy;
+	bool skip = false;
+	skip |= (axes.major <= 0);
+	skip |= (axes.minor <= 0);
+	if (!skip) {
+	    shape = psEllipseAxesToShape (axes);
+	    PAR[PM_PAR_SXX] = shape.sx;
+	    PAR[PM_PAR_SYY] = shape.sy;
+	    PAR[PM_PAR_SXY] = shape.sxy;
+	} else {
+	    PAR[PM_PAR_SXX] = 0.0;
+	    PAR[PM_PAR_SYY] = 0.0;
+	    PAR[PM_PAR_SXY] = 0.0;
+	}
+
+        float lflux = psMetadataLookupF32 (&status, row, "PEAK_FLUX_AS_MAG");
+	float flux = (isfinite(lflux)) ? pow(10.0, -0.4*lflux) : NAN;
+	source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], flux, PM_PEAK_LONE);
+        source->pixWeight = psMetadataLookupF32 (&status, row, "PSF_QF");
 
 	// XXX other values saved but not loaded?
 	// psMetadataLookupS64 (&status, row, "IPP_IDET");
-        // psMetadataLookupF32 (&status, row, "PSF_QF");
         // psMetadataLookupF32 (&status, row, "PSF_PROBABILITY");
-        // psMetadataLookupF32 (&status, row, "PEAK_FLUX_AS_MAG");
         // psMetadataLookupF32 (&status, row, "N_FRAMES");
 
