Index: trunk/psModules/src/objects/models/pmModel_DEV.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_DEV.c	(revision 29028)
+++ trunk/psModules/src/objects/models/pmModel_DEV.c	(revision 31153)
@@ -217,44 +217,29 @@
 bool PM_MODEL_GUESS (pmModel *model, pmSource *source)
 {
-    pmMoments *moments = source->moments;
-    pmPeak    *peak    = source->peak;
-    psF32     *PAR  = model->params->data.F32;
-
-    psEllipseMoments emoments;
-    emoments.x2 = moments->Mxx;
-    emoments.xy = moments->Mxy;
-    emoments.y2 = moments->Myy;
-
-    // force the axis ratio to be < 20.0
-    psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0);
-
-    if (!isfinite(axes.major)) return false;
-    if (!isfinite(axes.minor)) return false;
-    if (!isfinite(axes.theta)) return false;
-
-    psEllipseShape shape = psEllipseAxesToShape (axes);
-
-    if (!isfinite(shape.sx))  return false;
-    if (!isfinite(shape.sy))  return false;
-    if (!isfinite(shape.sxy)) return false;
-
-    // the other parameters depend on the guess for PAR_7
+    psF32 *PAR  = model->params->data.F32;
+
+    // sky is set to 0.0
+    PAR[PM_PAR_SKY]  = 0.0;
+
+    // set the shape parameters
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments)) {
+      return false;
+    }
+
+    // the normalization is modified by the slope
     float index = 0.5 / ALPHA;
     float bn = 1.9992*index - 0.3271;
-    // float fR = 1.0 / (sqrt(2.0) * pow (bn, index));
     float Io = exp(0.5*bn);
 
-    float Sxx = PS_MAX(0.5, shape.sx);
-    float Syy = PS_MAX(0.5, shape.sy);
-
-    PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux / Io;
-    PAR[PM_PAR_XPOS] = peak->xf;
-    PAR[PM_PAR_YPOS] = peak->yf;
-    // PAR[PM_PAR_SXX]  = Sxx * fR;
-    // PAR[PM_PAR_SYY]  = Syy * fR;
-    PAR[PM_PAR_SXX]  = Sxx;
-    PAR[PM_PAR_SYY]  = Syy;
-    PAR[PM_PAR_SXY]  = shape.sxy;
+    // set the model normalization
+    if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) {
+      return false;
+    }
+    PAR[PM_PAR_I0] /= Io;
+
+    // set the model position
+    if (!pmModelSetPosition(&PAR[PM_PAR_XPOS], &PAR[PM_PAR_YPOS], source)) {
+      return false;
+    }
 
     return(true);
@@ -322,5 +307,7 @@
     psF64 radius = axes.major * sqrt (2.0) * pow(zn, 0.5 / ALPHA);
 
-    psAssert (isfinite(radius), "fix this code: z should not be nan");
+    psAssert (isfinite(radius), "fix this code: radius should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f)", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY]);
+
     return (radius);
 }
Index: trunk/psModules/src/objects/models/pmModel_EXP.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_EXP.c	(revision 29028)
+++ trunk/psModules/src/objects/models/pmModel_EXP.c	(revision 31153)
@@ -210,33 +210,24 @@
 bool PM_MODEL_GUESS (pmModel *model, pmSource *source)
 {
-    pmMoments *moments = source->moments;
-    pmPeak    *peak    = source->peak;
-    psF32     *PAR  = model->params->data.F32;
-
-    psEllipseMoments emoments;
-    emoments.x2 = moments->Mxx;
-    emoments.xy = moments->Mxy;
-    emoments.y2 = moments->Myy;
-
-    // force the axis ratio to be < 20.0
-    psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0);
-
-    if (!isfinite(axes.major)) return false;
-    if (!isfinite(axes.minor)) return false;
-    if (!isfinite(axes.theta)) return false;
-
-    psEllipseShape shape = psEllipseAxesToShape (axes);
-
-    if (!isfinite(shape.sx))  return false;
-    if (!isfinite(shape.sy))  return false;
-    if (!isfinite(shape.sxy)) return false;
-
+    psF32 *PAR  = model->params->data.F32;
+
+    // sky is set to 0.0
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
-    PAR[PM_PAR_XPOS] = peak->xf;
-    PAR[PM_PAR_YPOS] = peak->yf;
-    PAR[PM_PAR_SXX]  = PS_MAX(0.5, M_SQRT2*shape.sx);
-    PAR[PM_PAR_SYY]  = PS_MAX(0.5, M_SQRT2*shape.sy);
-    PAR[PM_PAR_SXY]  = shape.sxy;
+
+    // set the shape parameters
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments)) {
+      return false;
+    }
+
+    // set the model normalization
+    if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) {
+      return false;
+    }
+
+    // set the model position
+    if (!pmModelSetPosition(&PAR[PM_PAR_XPOS], &PAR[PM_PAR_YPOS], source)) {
+      return false;
+    }
+
     return(true);
 }
@@ -303,5 +294,6 @@
     psF64 radius = axes.major * sqrt (2.0) * zn;
 
-    psAssert (isfinite(radius), "fix this code: z should not be nan for %f", PAR[PM_PAR_7]);
+    psAssert (isfinite(radius), "fix this code: radius should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f)", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY]);
     return (radius);
 }
Index: trunk/psModules/src/objects/models/pmModel_GAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_GAUSS.c	(revision 29028)
+++ trunk/psModules/src/objects/models/pmModel_GAUSS.c	(revision 31153)
@@ -193,24 +193,24 @@
 bool PM_MODEL_GUESS (pmModel *model, pmSource *source)
 {
-    pmMoments *moments = source->moments;
-    pmPeak    *peak    = source->peak;
-    psF32     *PAR  = model->params->data.F32;
-
-    psEllipseMoments emoments;
-    emoments.x2 = moments->Mxx;
-    emoments.y2 = moments->Myy;
-    emoments.xy = moments->Mxy;
-
-    // force the axis ratio to be < 20.0
-    psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0);
-    psEllipseShape shape = psEllipseAxesToShape (axes);
-
+    psF32 *PAR  = model->params->data.F32;
+
+    // sky is set to 0.0
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
-    PAR[PM_PAR_XPOS] = peak->xf;
-    PAR[PM_PAR_YPOS] = peak->yf;
-    PAR[PM_PAR_SXX] = PS_MAX(0.5, M_SQRT2*shape.sx);
-    PAR[PM_PAR_SYY] = PS_MAX(0.5, M_SQRT2*shape.sy);
-    PAR[PM_PAR_SXY] = shape.sxy;
+
+    // set the shape parameters
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments)) {
+      return false;
+    }
+
+    // set the model normalization
+    if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) {
+      return false;
+    }
+
+    // set the model position
+    if (!pmModelSetPosition(&PAR[PM_PAR_XPOS], &PAR[PM_PAR_YPOS], source)) {
+      return false;
+    }
+
     return(true);
 }
@@ -258,5 +258,6 @@
     psEllipseAxes axes = psEllipseShapeToAxes (shape, 20.0);
     psF64 radius = axes.major * sqrt (2.0 * log(PAR[PM_PAR_I0] / flux));
-    psAssert (isfinite(radius), "fix this code: radius should not be nan for %f", PAR[PM_PAR_I0]);
+    psAssert (isfinite(radius), "fix this code: radius should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f)", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY]);
 
     return (radius);
Index: trunk/psModules/src/objects/models/pmModel_PGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 29028)
+++ trunk/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 31153)
@@ -194,23 +194,24 @@
 bool PM_MODEL_GUESS (pmModel *model, pmSource *source)
 {
-    pmMoments *moments = source->moments;
-    pmPeak    *peak    = source->peak;
-    psF32     *PAR     = model->params->data.F32;
-
-    psEllipseMoments emoments;
-    emoments.x2 = moments->Mxx;
-    emoments.xy = moments->Mxy;
-    emoments.y2 = moments->Myy;
-
-    psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0);
-    psEllipseShape shape = psEllipseAxesToShape (axes);
-
+    psF32 *PAR  = model->params->data.F32;
+
+    // sky is set to 0.0
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
-    PAR[PM_PAR_XPOS] = peak->xf;
-    PAR[PM_PAR_YPOS] = peak->yf;
-    PAR[PM_PAR_SXX] = PS_MAX(0.5, M_SQRT2*shape.sx);
-    PAR[PM_PAR_SYY] = PS_MAX(0.5, M_SQRT2*shape.sy);
-    PAR[PM_PAR_SXY] = shape.sxy;
+
+    // set the shape parameters
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments)) {
+      return false;
+    }
+
+    // set the model normalization
+    if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) {
+      return false;
+    }
+
+    // set the model position
+    if (!pmModelSetPosition(&PAR[PM_PAR_XPOS], &PAR[PM_PAR_YPOS], source)) {
+      return false;
+    }
+
     return(true);
 }
@@ -285,7 +286,11 @@
     // choose a z value guaranteed to be beyond our limit
     float z0 = pow((1.0 / limit), (1.0 / 3.0));
-    psAssert (isfinite(z0), "fix this code: z0 should not be nan for %f", PAR[PM_PAR_I0]);
+    psAssert (isfinite(z0), "fix this code: z0 should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f)", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY]);
+
     float z1 = (1.0 / limit);
-    psAssert (isfinite(z1), "fix this code: z1 should not be nan for %f", PAR[PM_PAR_I0]);
+    psAssert (isfinite(z1), "fix this code: z1 should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f)", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY]);
+
     z1 = PS_MAX (z0, z1);
     z0 = 0.0;
Index: trunk/psModules/src/objects/models/pmModel_PS1_V1.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_PS1_V1.c	(revision 29028)
+++ trunk/psModules/src/objects/models/pmModel_PS1_V1.c	(revision 31153)
@@ -213,33 +213,25 @@
 bool PM_MODEL_GUESS (pmModel *model, pmSource *source)
 {
-    pmMoments *moments = source->moments;
-    pmPeak    *peak    = source->peak;
-    psF32     *PAR  = model->params->data.F32;
-
-    psEllipseMoments emoments;
-    emoments.x2 = moments->Mxx;
-    emoments.xy = moments->Mxy;
-    emoments.y2 = moments->Myy;
-
-    // force the axis ratio to be < 20.0
-    psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0);
-
-    if (!isfinite(axes.major)) return false;
-    if (!isfinite(axes.minor)) return false;
-    if (!isfinite(axes.theta)) return false;
-
-    psEllipseShape shape = psEllipseAxesToShape (axes);
-
-    if (!isfinite(shape.sx))  return false;
-    if (!isfinite(shape.sy))  return false;
-    if (!isfinite(shape.sxy)) return false;
-
+    psF32 *PAR  = model->params->data.F32;
+
+    // sky is set to 0.0
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
-    PAR[PM_PAR_XPOS] = peak->xf;
-    PAR[PM_PAR_YPOS] = peak->yf;
-    PAR[PM_PAR_SXX]  = PS_MAX(0.5, M_SQRT2*shape.sx);
-    PAR[PM_PAR_SYY]  = PS_MAX(0.5, M_SQRT2*shape.sy);
-    PAR[PM_PAR_SXY]  = shape.sxy;
+
+    // set the shape parameters
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments)) {
+      return false;
+    }
+
+    // set the model normalization
+    if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) {
+      return false;
+    }
+
+    // set the model position
+    if (!pmModelSetPosition(&PAR[PM_PAR_XPOS], &PAR[PM_PAR_YPOS], source)) {
+      return false;
+    }
+
+    // extra parameter
     PAR[PM_PAR_7]    = 0.5;
 
@@ -314,5 +306,6 @@
     float z0 = 0.0;
     float z1 = pow((1.0 / limit), (1.0 / ALPHA));
-    psAssert (isfinite(z1), "fix this code: z1 should not be nan for %f", PAR[PM_PAR_7]);
+    psAssert (isfinite(z1), "fix this code: z1 should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f)", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY]);
     if (PAR[PM_PAR_7] < 0.0) z1 *= 2.0;
 
Index: trunk/psModules/src/objects/models/pmModel_QGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 29028)
+++ trunk/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 31153)
@@ -214,33 +214,25 @@
 bool PM_MODEL_GUESS (pmModel *model, pmSource *source)
 {
-    pmMoments *moments = source->moments;
-    pmPeak    *peak    = source->peak;
-    psF32     *PAR  = model->params->data.F32;
-
-    psEllipseMoments emoments;
-    emoments.x2 = moments->Mxx;
-    emoments.xy = moments->Mxy;
-    emoments.y2 = moments->Myy;
-
-    // force the axis ratio to be < 20.0
-    psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0);
-
-    if (!isfinite(axes.major)) return false;
-    if (!isfinite(axes.minor)) return false;
-    if (!isfinite(axes.theta)) return false;
-
-    psEllipseShape shape = psEllipseAxesToShape (axes);
-
-    if (!isfinite(shape.sx))  return false;
-    if (!isfinite(shape.sy))  return false;
-    if (!isfinite(shape.sxy)) return false;
-
+    psF32 *PAR  = model->params->data.F32;
+
+    // sky is set to 0.0
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
-    PAR[PM_PAR_XPOS] = peak->xf;
-    PAR[PM_PAR_YPOS] = peak->yf;
-    PAR[PM_PAR_SXX]  = PS_MAX(0.5, M_SQRT2*shape.sx);
-    PAR[PM_PAR_SYY]  = PS_MAX(0.5, M_SQRT2*shape.sy);
-    PAR[PM_PAR_SXY]  = shape.sxy;
+
+    // set the shape parameters
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments)) {
+      return false;
+    }
+
+    // set the model normalization
+    if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) {
+      return false;
+    }
+
+    // set the model position
+    if (!pmModelSetPosition(&PAR[PM_PAR_XPOS], &PAR[PM_PAR_YPOS], source)) {
+      return false;
+    }
+
+    // extra parameter
     PAR[PM_PAR_7]    = 1.0;
 
@@ -315,5 +307,6 @@
     float z0 = 0.0;
     float z1 = pow((1.0 / limit), (1.0 / ALPHA));
-    psAssert (isfinite(z1), "fix this code: z1 should not be nan for %f", PAR[PM_PAR_7]);
+    psAssert (isfinite(z1), "fix this code: z1 should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f)", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY]);
     if (PAR[PM_PAR_7] < 0.0) z1 *= 2.0;
 
Index: trunk/psModules/src/objects/models/pmModel_RGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 29028)
+++ trunk/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 31153)
@@ -203,33 +203,25 @@
 bool PM_MODEL_GUESS (pmModel *model, pmSource *source)
 {
-    pmMoments *moments = source->moments;
-    pmPeak    *peak    = source->peak;
-    psF32     *PAR  = model->params->data.F32;
-
-    psEllipseMoments emoments;
-    emoments.x2 = moments->Mxx;
-    emoments.xy = moments->Mxy;
-    emoments.y2 = moments->Myy;
-
-    // force the axis ratio to be < 20.0
-    psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0);
-
-    if (!isfinite(axes.major)) return false;
-    if (!isfinite(axes.minor)) return false;
-    if (!isfinite(axes.theta)) return false;
-
-    psEllipseShape shape = psEllipseAxesToShape (axes);
-
-    if (!isfinite(shape.sx))  return false;
-    if (!isfinite(shape.sy))  return false;
-    if (!isfinite(shape.sxy)) return false;
-
+    psF32 *PAR  = model->params->data.F32;
+
+    // sky is set to 0.0
     PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux;
-    PAR[PM_PAR_XPOS] = peak->xf;
-    PAR[PM_PAR_YPOS] = peak->yf;
-    PAR[PM_PAR_SXX]  = PS_MAX(0.5, shape.sx);
-    PAR[PM_PAR_SYY]  = PS_MAX(0.5, shape.sy);
-    PAR[PM_PAR_SXY]  = shape.sxy;
+
+    // set the shape parameters
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments)) {
+      return false;
+    }
+
+    // set the model normalization
+    if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) {
+      return false;
+    }
+
+    // set the model position
+    if (!pmModelSetPosition(&PAR[PM_PAR_XPOS], &PAR[PM_PAR_YPOS], source)) {
+      return false;
+    }
+
+    // extra parameter
     PAR[PM_PAR_7]    = 1.5;
 
@@ -305,7 +297,11 @@
     // choose a z value guaranteed to be beyond our limit
     float z0 = pow((1.0 / limit), (1.0 / PAR[PM_PAR_7]));
-    psAssert (isfinite(z0), "fix this code: z0 should not be nan for %f", PAR[PM_PAR_7]);
+    psAssert (isfinite(z0), "fix this code: z0 should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f), par 7 = %f", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], PAR[PM_PAR_7]);
+
     float z1 = (1.0 / limit);
-    psAssert (isfinite(z1), "fix this code: z1 should not be nan for %f", PAR[PM_PAR_7]);
+    psAssert (isfinite(z1), "fix this code: z1 should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f), par 7 = %f", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], PAR[PM_PAR_7]);
+
     z1 = PS_MAX (z0, z1);
     z0 = 0.0;
Index: trunk/psModules/src/objects/models/pmModel_SERSIC.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_SERSIC.c	(revision 29028)
+++ trunk/psModules/src/objects/models/pmModel_SERSIC.c	(revision 31153)
@@ -222,6 +222,8 @@
 {
     pmMoments *moments = source->moments;
-    pmPeak    *peak    = source->peak;
     psF32     *PAR  = model->params->data.F32;
+
+    // sky is set to 0.0
+    PAR[PM_PAR_SKY]  = 0.0;
 
     // the other parameters depend on the guess for PAR_7
@@ -236,4 +238,5 @@
     float Zero  = 1.16 - 0.615 * PAR[PM_PAR_7];
 
+    // Sersic shape is a bit special
     psEllipseMoments emoments;
     emoments.x2 = moments->Mxx;
@@ -273,11 +276,18 @@
     float Syy = PS_MAX(0.5, shape.sy);
 
-    PAR[PM_PAR_SKY]  = 0.0;
-    PAR[PM_PAR_I0]   = peak->flux / Io;
-    PAR[PM_PAR_XPOS] = peak->xf;
-    PAR[PM_PAR_YPOS] = peak->yf;
     PAR[PM_PAR_SXX]  = Sxx;
     PAR[PM_PAR_SYY]  = Syy;
     PAR[PM_PAR_SXY]  = shape.sxy;
+
+    // set the model normalization (adjust for Sersic best guess)
+    if (!pmModelSetNorm(&PAR[PM_PAR_I0], source)) {
+      return false;
+    }
+    PAR[PM_PAR_I0] /= Io;
+
+    // set the model position
+    if (!pmModelSetPosition(&PAR[PM_PAR_XPOS], &PAR[PM_PAR_YPOS], source)) {
+      return false;
+    }
 
     return(true);
@@ -346,7 +356,6 @@
     psF64 radius = axes.major * sqrt (2.0) * pow(zn, 0.5 / PAR[PM_PAR_7]);
 
-    // fprintf (stderr, "sersic model %f %f, n %f, radius: %f, zn: %f, f/Io: %f, major: %f\n", PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], PAR[PM_PAR_7], radius, zn, flux/PAR[PM_PAR_I0], axes.major);
-
-    psAssert (isfinite(radius), "fix this code: z should not be nan for %f", PAR[PM_PAR_7]);
+    psAssert (isfinite(radius), "fix this code: radius should not be nan for Io = %f, flux = %f, major = %f (%f, %f, %f), par 7 = %f", 
+	      PAR[PM_PAR_I0], flux, axes.major, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], PAR[PM_PAR_7]);
     return (radius);
 }
