Index: /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_GAUSS.c
===================================================================
--- /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_GAUSS.c	(revision 42011)
+++ /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_GAUSS.c	(revision 42012)
@@ -203,5 +203,6 @@
 
     // set the shape parameters
-    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false)) {
+    // the last parameter is the scaling factor for Moments to shape parameter radius guess
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false, 1.0)) {
       return false;
     }
Index: /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_HSC_V1.c
===================================================================
--- /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_HSC_V1.c	(revision 42011)
+++ /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_HSC_V1.c	(revision 42012)
@@ -223,5 +223,6 @@
 
     // set the shape parameters
-    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false)) {
+    // the last parameter is the scaling factor for Moments to shape parameter radius guess
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false, 1.0)) {
       return false;
     }
Index: /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_PGAUSS.c
===================================================================
--- /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 42011)
+++ /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_PGAUSS.c	(revision 42012)
@@ -204,5 +204,6 @@
 
     // set the shape parameters
-    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false)) {
+    // the last parameter is the scaling factor for Moments to shape parameter radius guess
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false, 1.0)) {
       return false;
     }
Index: /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_PS1_V1.c
===================================================================
--- /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_PS1_V1.c	(revision 42011)
+++ /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_PS1_V1.c	(revision 42012)
@@ -223,5 +223,6 @@
 
     // set the shape parameters
-    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false)) {
+    // the last parameter is the scaling factor for Moments to shape parameter radius guess
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false, 1.0)) {
       return false;
     }
Index: /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_QGAUSS.c
===================================================================
--- /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 42011)
+++ /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 42012)
@@ -224,5 +224,6 @@
 
     // set the shape parameters
-    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false)) {
+    // the last parameter is the scaling factor for Moments to shape parameter radius guess
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false, 1.5)) {
       return false;
     }
Index: /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_RGAUSS.c
===================================================================
--- /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 42011)
+++ /branches/eam_branches/ipp-20211108/psModules/src/objects/models/pmModel_RGAUSS.c	(revision 42012)
@@ -213,5 +213,6 @@
 
     // set the shape parameters
-    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false)) {
+    // the last parameter is the scaling factor for Moments to shape parameter radius guess
+    if (!pmModelSetShape(&PAR[PM_PAR_SXX], &PAR[PM_PAR_SXY], &PAR[PM_PAR_SYY], source->moments, false, 2.0)) {
       return false;
     }
Index: /branches/eam_branches/ipp-20211108/psModules/src/objects/pmModelUtils.c
===================================================================
--- /branches/eam_branches/ipp-20211108/psModules/src/objects/pmModelUtils.c	(revision 42011)
+++ /branches/eam_branches/ipp-20211108/psModules/src/objects/pmModelUtils.c	(revision 42012)
@@ -179,5 +179,6 @@
 // Reff says if this is a model which uses R_eff (like exp or dev) instead of Sigma
 // set the parameter values SXX, SXY, SYY
-bool pmModelSetShape (float *Sxx, float *Sxy, float *Syy, pmMoments *moments, bool useReff) {
+// Scale allows some models to increase the guess size relative to Mxx,Myy
+bool pmModelSetShape (float *Sxx, float *Sxy, float *Syy, pmMoments *moments, bool useReff, float Scale) {
 
     psEllipseMoments emoments;
@@ -190,13 +191,19 @@
 
     if (!isfinite(axes.major)) return false;
-    if (axes.major == 0) return false;
     if (!isfinite(axes.minor)) return false;
     if (!isfinite(axes.theta)) return false;
-    if (axes.major == 0) return false;
-
+
+    // set a lower limit to avoid absurd solutions..
+    // NOTE: I should set the lower limit based on the PSF size, if known
+    float Rmajor = PS_MAX(1.0, Scale * axes.major);
+    float Rminor = Rmajor * (axes.minor / axes.major);
+    axes.major = Rmajor;
+    axes.minor = Rminor;
+
+    // EAM 2022.02.05 : Mrf is often much too large, disable this for now
     // Mxx, Mxy, Myy define the elliptical shape, but Mrf defines the width 
-    float scale = (isfinite(moments->Mrf) && (moments->Mrf > 0.0)) ? moments->Mrf / axes.major : 1.0;
-    axes.major *= scale;
-    axes.minor *= scale;
+    // float scale = (isfinite(moments->Mrf) && (moments->Mrf > 0.0)) ? moments->Mrf / axes.major : 1.0;
+    // axes.major *= scale;
+    // axes.minor *= scale;
 
     pmModelAxesToParams (Sxx, Sxy, Syy, axes, useReff);
Index: /branches/eam_branches/ipp-20211108/psModules/src/objects/pmModelUtils.h
===================================================================
--- /branches/eam_branches/ipp-20211108/psModules/src/objects/pmModelUtils.h	(revision 42011)
+++ /branches/eam_branches/ipp-20211108/psModules/src/objects/pmModelUtils.h	(revision 42012)
@@ -44,5 +44,5 @@
 bool pmModelSetPosition (float *Xo, float *Yo, pmSource *source);
 bool pmModelSetNorm (float *Io, pmSource *source);
-bool pmModelSetShape (float *Sxx, float *Sxy, float *Syy, pmMoments *moments, bool useReff);
+bool pmModelSetShape (float *Sxx, float *Sxy, float *Syy, pmMoments *moments, bool useReff, float Scale);
 
 bool pmModelUseReff (pmModelType type);
