Index: trunk/psphot/src/pmSourceFitSet.c
===================================================================
--- trunk/psphot/src/pmSourceFitSet.c	(revision 6379)
+++ trunk/psphot/src/pmSourceFitSet.c	(revision 6441)
@@ -143,28 +143,15 @@
     psMinimization *myMin = psMinimizationAlloc(PM_SOURCE_FIT_MODEL_NUM_ITERATIONS,
                             PM_SOURCE_FIT_MODEL_TOLERANCE);
+    psMinConstrain *constrain = psMinConstrainAlloc();
+    constrain->paramMask = paramMask;
 
     // Set the parameter range checks
     pmModelLimits modelLimits = pmModelLimits_GetFunction (model->type);
-    psVector *beta_lim = NULL;
-    psVector *params_min = NULL;
-    psVector *params_max = NULL;
-
-    // XXX EAM : in this implementation, I pass in the limits with the covar matrix.
-    //           in the SDRS, I define a new psMinimization which will take these in
-    psImage *covar = psImageAlloc (params->n, 3, PS_TYPE_F64);
-    modelLimits (&beta_lim, &params_min, &params_max);
-    for (int i = 0; i < nSrc; i++) {
-	for (int n = 1; n < nPar; n++) {
-	    covar->data.F64[0][i*nPar + n] = beta_lim->data.F32[n];
-	    covar->data.F64[1][i*nPar + n] = params_min->data.F32[n];
-	    covar->data.F64[2][i*nPar + n] = params_max->data.F32[n];
-	}
-    }
-    covar->data.F64[0][0] = beta_lim->data.F32[0];
-    covar->data.F64[1][0] = params_min->data.F32[0];
-    covar->data.F64[2][0] = params_max->data.F32[0];
+    modelLimits (&constrain->paramDelta, &constrain->paramMin, &constrain->paramMax);
+
+    psImage *covar = psImageAlloc (params->n, params->n, PS_TYPE_F64);
 
     psTrace (".pmObjects.pmSourceFitSet", 5, "fitting function\n");
-    fitStatus = psMinimizeLMChi2(myMin, covar, params, paramMask, x, y, yErr, pmModelFitSet);
+    fitStatus = psMinimizeLMChi2(myMin, covar, params, constrain, x, y, yErr, pmModelFitSet);
 
     // parameter errors from the covariance matrix
@@ -221,10 +208,11 @@
     psFree(myMin);
     psFree(covar);
-    psFree(paramMask);
+    psFree(constrain->paramMask);
+    psFree(constrain->paramMin);
+    psFree(constrain->paramMax);
+    psFree(constrain->paramDelta);
+    psFree(constrain);
     psFree(params);
     psFree(dparams);
-    psFree(params_min);
-    psFree(params_max);
-    psFree(beta_lim);
 
     // free static memory used by pmModelFitSet
