Index: trunk/Ohana/src/opihi/lib.data/mrq2dmin.c
===================================================================
--- trunk/Ohana/src/opihi/lib.data/mrq2dmin.c	(revision 2843)
+++ trunk/Ohana/src/opihi/lib.data/mrq2dmin.c	(revision 2938)
@@ -7,8 +7,13 @@
 */
 
+# define VERY_VERBOSE 0
+
 static float **alpha, **talpha;
 static float **beta, **tbeta;
 static float *partry, *dyda;
 static float ochisq, lambda;
+
+static float *parmin = NULL;
+static float *parmax = NULL;
 
 float mrq2dcof (float *x, float *t, float *y, float *dy, int Npts, 
@@ -41,6 +46,31 @@
       ta[k][j] = ta[j][k];
       
+# if (VERY_VERBOSE)
+  for (j = 0; j < Npar; j++) {
+    for (k = 0; k < Npar; k++) {
+      fprintf (stderr, "%9.3e  ", ta[j][k]);
+    }
+    fprintf (stderr, "    :   %9.3e  ", tb[j][0]);
+    fprintf (stderr, "\n");
+  }
+# endif
+
   return (chisq);
 
+}
+
+float mrq2dchi (float *x, float *t, float *y, float *dy, int Npts, 
+		float *par, int Npar, 
+		float (funcs)(float, float, float *, int, float *)) {
+
+  int k, j, i;
+  float ydiff, wt, chisq;
+
+  chisq = 0.0;
+  for (i = 0; i < Npts; i++) {
+    ydiff = funcs (x[i], t[i], par, Npar, dyda) - y[i];
+    chisq += SQ(ydiff) * dy[i];
+  }
+  return (chisq);
 }
 
@@ -65,5 +95,11 @@
   }
 
-  for (j = 0; j < Npar; j++) partry[j] = par[j] - tbeta[j][0];
+  for (j = 0; j < Npar; j++) {
+    partry[j] = par[j] - tbeta[j][0];
+    /*
+    if (parmin != NULL) partry[j] = MAX (parmin[j], partry[j]);
+    if (parmax != NULL) partry[j] = MIN (parmax[j], partry[j]);
+    */
+  }
 
   chisq = mrq2dcof (x, t, y, dy, Npts, partry, Npar, talpha, tbeta, funcs);
@@ -93,4 +129,17 @@
   return (chisq);
 
+}
+
+int mrq2dlimits (float *pmin, float *pmax, int Npar) {
+
+  int i;
+
+  ALLOCATE (parmin, float, Npar);
+  ALLOCATE (parmax, float, Npar);
+  for (i = 0; i < Npar; i++) {
+    parmin[i] = pmin[i];
+    parmax[i] = pmax[i];
+  }
+  return (TRUE);
 }
 
@@ -156,3 +205,6 @@
   free (dyda);
 
-}
+  if (parmin != NULL) free (parmin);
+  if (parmax != NULL) free (parmax);
+
+}
