Index: trunk/Ohana/src/opihi/cmd.data/fit2d.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/fit2d.c	(revision 16059)
+++ trunk/Ohana/src/opihi/cmd.data/fit2d.c	(revision 20936)
@@ -7,5 +7,5 @@
   int k, K, i, j, n, Npt, Nmask, nx, ny, nterm, mterm, wterm, order;
   int N, Weight, Quiet, ClipNiter, VERBOSE;
-  float *x, *y, *z, *dz, *zfit, *zf; 
+  opihi_flt *x, *y, *z, *dz, *zfit, *zf; 
   char name[64], *mask;
   Vector *xvec, *yvec, *zvec, *dzvec;
@@ -64,7 +64,14 @@
     return (FALSE);
   }
-  if (Weight && xvec[0].Nelements != dzvec[0].Nelements) {
-    gprint (GP_ERR, "vectors must have same length\n");
-    return (FALSE);
+  REQUIRE_VECTOR_FLT (xvec, FALSE); 
+  REQUIRE_VECTOR_FLT (yvec, FALSE); 
+  REQUIRE_VECTOR_FLT (zvec, FALSE); 
+
+  if (Weight) {
+    REQUIRE_VECTOR_FLT (dzvec, FALSE); 
+    if (xvec[0].Nelements != dzvec[0].Nelements) {
+      gprint (GP_ERR, "vectors must have same length\n");
+      return (FALSE);
+    }
   }
   
@@ -74,5 +81,5 @@
   mterm = 2*order + 1;
 
-  ALLOCATE (zfit, float, xvec[0].Nelements);
+  ALLOCATE (zfit, opihi_flt, xvec[0].Nelements);
   ALLOCATE (mask, char, xvec[0].Nelements);
   memset (mask, 0, xvec[0].Nelements);
@@ -102,8 +109,8 @@
     }
 
-    x = xvec[0].elements;
-    y = yvec[0].elements;
-    z = zvec[0].elements;
-    if (Weight) dz = dzvec[0].elements;
+    x = xvec[0].elements.Flt;
+    y = yvec[0].elements.Flt;
+    z = zvec[0].elements.Flt;
+    if (Weight) dz = dzvec[0].elements.Flt;
 
     /* add up the x,y values */
@@ -128,7 +135,7 @@
 
     /* add up the z values */
-    x = xvec[0].elements;
-    y = yvec[0].elements;
-    z = zvec[0].elements;
+    x = xvec[0].elements.Flt;
+    y = yvec[0].elements.Flt;
+    z = zvec[0].elements.Flt;
     for (i = 0; i < xvec[0].Nelements; i++, x++, y++, z++) {
       if (mask[i]) continue;
@@ -179,6 +186,6 @@
     */
     /* generate fitted values */
-    x = xvec[0].elements;
-    y = yvec[0].elements;
+    x = xvec[0].elements.Flt;
+    y = yvec[0].elements.Flt;
     zf = zfit;
     for (n = 0; n < xvec[0].Nelements; n++, x++, y++, zf++) {
@@ -197,7 +204,7 @@
 
     /* measure fit residual scatter */
-    x  = xvec[0].elements;
-    y  = yvec[0].elements;
-    z  = zvec[0].elements;
+    x  = xvec[0].elements.Flt;
+    y  = yvec[0].elements.Flt;
+    z  = zvec[0].elements.Flt;
     zf = zfit;
     dZ = dZ2 = 0;
@@ -216,7 +223,7 @@
 
     /* mask outlier points */
-    x  = xvec[0].elements;
-    y  = yvec[0].elements;
-    z  = zvec[0].elements;
+    x  = xvec[0].elements.Flt;
+    y  = yvec[0].elements.Flt;
+    z  = zvec[0].elements.Flt;
     zf = zfit;
     Nmask = 0;
