Index: trunk/psModules/src/objects/models/pmModel_PGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 6511)
+++ trunk/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 6872)
@@ -26,13 +26,13 @@
 
     if (deriv != NULL) {
-        // note difference from a pure gaussian: q = PAR[1]*r
+        psF32 *dPAR = deriv->data.F32;
         psF32 q = PAR[1]*r*r*t;
-        deriv->data.F32[0] = +1.0;
-        deriv->data.F32[1] = +r;
-        deriv->data.F32[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
-        deriv->data.F32[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
-        deriv->data.F32[4] = -2.0*q*px*X;
-        deriv->data.F32[5] = -2.0*q*py*Y;
-        deriv->data.F32[6] = -q*X*Y;
+        dPAR[0] = +1.0;
+        dPAR[1] = +r;
+        dPAR[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
+        dPAR[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
+        dPAR[4] = -2.0*q*px*X;
+        dPAR[5] = -2.0*q*py*Y;
+        dPAR[6] = -q*X*Y;
     }
     return(f);
@@ -50,5 +50,5 @@
 
     beta_lim[0][0].data.F32[0] = 1000;
-    beta_lim[0][0].data.F32[1] = 10000;
+    beta_lim[0][0].data.F32[1] = 3e6;
     beta_lim[0][0].data.F32[2] = 5;
     beta_lim[0][0].data.F32[3] = 5;
@@ -66,5 +66,5 @@
 
     params_max[0][0].data.F32[0] = 1e5;
-    params_max[0][0].data.F32[1] = 1e6;
+    params_max[0][0].data.F32[1] = 1e8;
     params_max[0][0].data.F32[2] = 1e4;  // this should be set by image dimensions!
     params_max[0][0].data.F32[3] = 1e4;  // this should be set by image dimensions!
@@ -133,4 +133,5 @@
     params[5] = 1.2 / moments->Sy;
     params[6] = 0.0;
+
     return(true);
 }
Index: trunk/psModules/src/objects/models/pmModel_QGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 6511)
+++ trunk/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 6872)
@@ -26,21 +26,27 @@
     psF32 py = PAR[5]*Y;
     psF32 z  = 0.5*PS_SQR(px) + 0.5*PS_SQR(py) + PAR[6]*X*Y;
-
-    psF32 r  = 1.0 / (1 + PAR[7]*z + pow(z, 2.25));
-    psF32 f  = PAR[1]*r + PAR[0];
+    psF32 zp = pow(z,1.25);
+
+    psF32 r  = 1.0 / (1 + PAR[7]*z + z*zp);
+    // test: psF32 r  = 1.0 / (1 + PAR[7]*z + PS_SQR(z));
+    psF32 r1 = PAR[1]*r;
+    psF32 f  = r1 + PAR[0];
 
     if (deriv != NULL) {
+        psF32 *dPAR = deriv->data.F32;
+
         // note difference from a pure gaussian: q = params->data.F32[1]*r
-        psF32 t = PAR[1]*r*r;
-        psF32 q = t*(PAR[7] + 2.25*pow(z, 1.25));
-
-        deriv->data.F32[0] = +1.0;
-        deriv->data.F32[1] = +r;
-        deriv->data.F32[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
-        deriv->data.F32[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
-        deriv->data.F32[4] = -2.0*q*px*X;
-        deriv->data.F32[5] = -2.0*q*py*Y;
-        deriv->data.F32[6] = -q*X*Y;
-        deriv->data.F32[7] = -t*z;
+        psF32 t = r1*r;
+        psF32 q = t*(PAR[7] + 2.25*zp);
+        // test: psF32 q = t*(PAR[7] + 2*z);
+
+        dPAR[0] = +1.0;
+        dPAR[1] = +r;
+        dPAR[2] = q*(2.0*px*PAR[4] + PAR[6]*Y);
+        dPAR[3] = q*(2.0*py*PAR[5] + PAR[6]*X);
+        dPAR[4] = -2.0*q*px*X;
+        dPAR[5] = -2.0*q*py*Y;
+        dPAR[6] = -q*X*Y;
+        dPAR[7] = -t*z;
     }
     return(f);
@@ -58,5 +64,5 @@
 
     beta_lim[0][0].data.F32[0] = 1000;
-    beta_lim[0][0].data.F32[1] = 10000;
+    beta_lim[0][0].data.F32[1] = 3e6;
     beta_lim[0][0].data.F32[2] = 5;
     beta_lim[0][0].data.F32[3] = 5;
@@ -76,5 +82,5 @@
 
     params_max[0][0].data.F32[0] = 1e5;
-    params_max[0][0].data.F32[1] = 1e6;
+    params_max[0][0].data.F32[1] = 1e8;
     params_max[0][0].data.F32[2] = 1e4;  // this should be set by image dimensions!
     params_max[0][0].data.F32[3] = 1e4;  // this should be set by image dimensions!
@@ -102,4 +108,5 @@
     params[6] = 0.0;
     params[7] = 1.0;
+
     return(true);
 }
@@ -119,9 +126,10 @@
     // the area needs to be multiplied by the integral of f(z)
     norm = 0.0;
-    for (z = 0.005; z < 50; z += 0.01) {
+    for (z = 0.05; z < 50; z += 0.1) {
         f = 1.0 / (1 + PAR[7]*z + pow(z, 2.25));
+        // test: f = 1.0 / (1 + PAR[7]*z + PS_SQR(z));
         norm += f;
     }
-    norm *= 0.01;
+    norm *= 0.1;
 
     psF64 Flux = PAR[1] * Area * norm;
@@ -150,6 +158,7 @@
 
     // we can do this much better with intelligent choices here
-    for (z = 0.0; z < 20.0; z += dz) {
+    for (z = 0.0; z < 30.0; z += dz) {
         f = 1.0 / (1 + PAR[7]*z + pow(z, 2.25));
+        // test: f = 1.0 / (1 + PAR[7]*z + PS_SQR(z));
         if (f < limit)
             break;
@@ -201,6 +210,6 @@
     status &= ((dPAR[1]/PAR[1]) < 0.5);
 
-    if (status)
-        return true;
-    return false;
-}
+    if (!status)
+        return false;
+    return true;
+}
Index: trunk/psModules/src/objects/models/pmModel_RGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 6511)
+++ trunk/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 6872)
@@ -117,7 +117,7 @@
     psVector *params = model->params;
 
-    EllipseAxes axes;
-    EllipseShape shape;
-    EllipseMoments moments;
+    psEllipseAxes axes;
+    psEllipseShape shape;
+    psEllipseMoments moments;
 
     moments.x2 = PS_SQR(source->moments->Sx);
@@ -125,6 +125,6 @@
     moments.xy = source->moments->Sxy;
 
-    axes = EllipseMomentsToAxes(moments);
-    shape = EllipseAxesToShape(axes);
+    axes = psEllipseMomentsToAxes(moments);
+    shape = psEllipseAxesToShape(axes);
 
     params->data.F32[0] = source->moments->Sky;
Index: trunk/psModules/src/objects/models/pmModel_SGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_SGAUSS.c	(revision 6511)
+++ trunk/psModules/src/objects/models/pmModel_SGAUSS.c	(revision 6872)
@@ -17,5 +17,5 @@
 
 # define SQ(A)((A)*(A))
-psF64 psImageEllipseContour (EllipseAxes axes, double xc, double yc, psImage *image);
+psF64 psImageEllipseContour (psEllipseAxes axes, double xc, double yc, psImage *image);
 psF64 p_psImageGetElementF64(psImage *a, int i, int j);
 
@@ -102,5 +102,5 @@
 
 // measure the flux for the elliptical contour
-psF64 psImageEllipseContour (EllipseAxes axes, double xc, double yc, psImage *image)
+psF64 psImageEllipseContour (psEllipseAxes axes, double xc, double yc, psImage *image)
 {
 
@@ -149,7 +149,7 @@
     psF32     *params   = model->params->data.F32;
 
-    EllipseAxes axes;
-    EllipseShape shape;
-    EllipseMoments moments;
+    psEllipseAxes axes;
+    psEllipseShape shape;
+    psEllipseMoments moments;
 
     moments.x2 = PS_SQR(sMoments->Sx);
@@ -158,6 +158,6 @@
 
     // solve the math to go from Moments To Shape
-    axes = EllipseMomentsToAxes(moments);
-    shape = EllipseAxesToShape(axes);
+    axes = psEllipseMomentsToAxes(moments);
+    shape = psEllipseAxesToShape(axes);
 
     params[0] = sMoments->Sky;
@@ -199,7 +199,7 @@
     float f1, f2;
 
-    EllipseAxes axes;
-    EllipseShape shape;
-    EllipseMoments moments;
+    psEllipseAxes axes;
+    psEllipseShape shape;
+    psEllipseMoments moments;
 
     moments.x2 = PS_SQR(sMoments->Sx);
@@ -208,6 +208,6 @@
 
     // solve the math to go from Moments To Shape
-    axes = EllipseMomentsToAxes(moments);
-    shape = EllipseAxesToShape(axes);
+    axes = psEllipseMomentsToAxes(moments);
+    shape = psEllipseAxesToShape(axes);
 
     params[0] = sMoments->Sky;
@@ -265,9 +265,9 @@
 psF64 pmModelRadius_SGAUSS  (const psVector *params, psF64 flux)
 {
-    psF64 r, z, pr, f;
+    psF64 r, z = 0.0, pr, f;
     psF32 *PAR = params->data.F32;
 
-    EllipseAxes axes;
-    EllipseShape shape;
+    psEllipseAxes axes;
+    psEllipseShape shape;
 
     if (flux <= 0)
@@ -283,5 +283,5 @@
     shape.sxy = PAR[6];
 
-    axes = EllipseShapeToAxes (shape);
+    axes = psEllipseShapeToAxes (shape);
     psF64 dr = 1.0 / axes.major;
     psF64 limit = flux / PAR[1];
@@ -327,6 +327,6 @@
     psF32 dP;
     bool  status;
-    EllipseAxes axes;
-    EllipseShape shape;
+    psEllipseAxes axes;
+    psEllipseShape shape;
 
     psF32 *PAR  = model->params->data.F32;
@@ -337,5 +337,5 @@
     shape.sxy = PAR[6];
 
-    axes = EllipseShapeToAxes (shape);
+    axes = psEllipseShapeToAxes (shape);
 
     dP = 0;
Index: trunk/psModules/src/objects/models/pmModel_ZGAUSS.c
===================================================================
--- trunk/psModules/src/objects/models/pmModel_ZGAUSS.c	(revision 6511)
+++ trunk/psModules/src/objects/models/pmModel_ZGAUSS.c	(revision 6872)
@@ -85,6 +85,6 @@
     psF32 *PAR = params->data.F32;
 
-    EllipseAxes axes;
-    EllipseShape shape;
+    psEllipseAxes axes;
+    psEllipseShape shape;
 
     if (flux <= 0)
@@ -100,5 +100,5 @@
     shape.sxy = PAR[6];
 
-    axes = EllipseShapeToAxes (shape);
+    axes = psEllipseShapeToAxes (shape);
     psF64 dr = 1.0 / axes.major;
     psF64 limit = flux / PAR[1];
@@ -124,7 +124,7 @@
     psVector *params = model->params;
 
-    EllipseAxes axes;
-    EllipseShape shape;
-    EllipseMoments moments;
+    psEllipseAxes axes;
+    psEllipseShape shape;
+    psEllipseMoments moments;
 
     moments.x2 = PS_SQR(source->moments->Sx);
@@ -132,6 +132,6 @@
     moments.xy = source->moments->Sxy;
 
-    axes = EllipseMomentsToAxes(moments);
-    shape = EllipseAxesToShape(axes);
+    axes = psEllipseMomentsToAxes(moments);
+    shape = psEllipseAxesToShape(axes);
 
     params->data.F32[0] = source->moments->Sky;
