Index: trunk/Ohana/src/opihi/cmd.data/fit.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/fit.c	(revision 16059)
+++ trunk/Ohana/src/opihi/cmd.data/fit.c	(revision 20936)
@@ -8,5 +8,5 @@
   int N, Weight, Quiet, ClipNiter;
   Vector *xvec, *yvec, *dyvec;
-  float *x, *y, *dy, *yf, *yfit;
+  opihi_flt *x, *y, *dy, *yf, *yfit;
   char name[64], *mask;
 
@@ -53,9 +53,16 @@
     return (FALSE);
   }
-  if (Weight && xvec[0].Nelements != dyvec[0].Nelements) {
-    gprint (GP_ERR, "vectors must have same length\n");
-    return (FALSE);
-  }
-  
+  REQUIRE_VECTOR_FLT (xvec, FALSE); 
+  REQUIRE_VECTOR_FLT (yvec, FALSE); 
+
+  if (Weight) {
+    REQUIRE_VECTOR_FLT (dyvec, FALSE); 
+    if (xvec[0].Nelements != dyvec[0].Nelements) {
+      gprint (GP_ERR, "vectors must have same length\n");
+      return (FALSE);
+    }
+  }
+ 
+
   /* nterm is number of polynomial terms, starting at x^0 */
   order = atof (argv[3]);
@@ -63,5 +70,5 @@
   mterm = 2*nterm;
 
-  ALLOCATE (yfit, float, xvec[0].Nelements);
+  ALLOCATE (yfit, opihi_flt, xvec[0].Nelements);
   ALLOCATE (mask, char, xvec[0].Nelements);
   memset (mask, 0, xvec[0].Nelements);
@@ -88,7 +95,7 @@
 
     /* perform linear fit */
-    x = xvec[0].elements;
-    y = yvec[0].elements;
-    if (Weight) dy = dyvec[0].elements;
+    x = xvec[0].elements.Flt;
+    y = yvec[0].elements.Flt;
+    if (Weight) dy = dyvec[0].elements.Flt;
 
     for (i = 0; i < xvec[0].Nelements; i++, x++, y++) {
@@ -121,5 +128,5 @@
 
     /* generate fitted values */
-    x = xvec[0].elements;
+    x = xvec[0].elements.Flt;
     yf = yfit;
     for (i = 0; i < xvec[0].Nelements; i++, x++, yf++) {
@@ -134,6 +141,6 @@
 
     /* measure fit residual scatter */
-    x  = xvec[0].elements;
-    y  = yvec[0].elements;
+    x  = xvec[0].elements.Flt;
+    y  = yvec[0].elements.Flt;
     yf = yfit;
     dY = dY2 = 0;
@@ -150,6 +157,6 @@
 
     /* mask outlier points */
-    x  = xvec[0].elements;
-    y  = yvec[0].elements;
+    x  = xvec[0].elements.Flt;
+    y  = yvec[0].elements.Flt;
     yf = yfit;
     Nmask = 0;
@@ -193,12 +200,12 @@
     if ((fvec = SelectVector ("yfit", ANYVECTOR, TRUE)) == NULL) return (FALSE);    
     if ((mvec = SelectVector ("mask", ANYVECTOR, TRUE)) == NULL) return (FALSE);    
-    free (fvec[0].elements);
-    fvec[0].elements = yfit;
+    free (fvec[0].elements.Flt);
+    fvec[0].elements.Flt = yfit;
     fvec[0].Nelements = xvec[0].Nelements;
     mvec[0].Nelements = xvec[0].Nelements;
 
-    REALLOCATE (mvec[0].elements, float, xvec[0].Nelements);
+    REALLOCATE (mvec[0].elements.Flt, opihi_flt, xvec[0].Nelements);
     for (i = 0; i < xvec[0].Nelements; i++) {
-      mvec[0].elements[i] = mask[i];
+      mvec[0].elements.Flt[i] = mask[i];
     }
   } else {
