Index: trunk/Ohana/src/opihi/cmd.data/histogram.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/histogram.c	(revision 18251)
+++ trunk/Ohana/src/opihi/cmd.data/histogram.c	(revision 20936)
@@ -4,5 +4,6 @@
   
   int i, bin, Nbins;
-  float *V, start, end, delta;
+  opihi_int *OUT;
+  opihi_flt start, end, delta;
   Vector *xvec, *yvec;
 
@@ -30,18 +31,25 @@
   if ((xvec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE);
   if ((yvec = SelectVector (argv[2], ANYVECTOR, TRUE)) == NULL) return (FALSE);
-  yvec[0].Nelements = Nbins;
-    
-  REALLOCATE (yvec[0].elements, float, yvec[0].Nelements);
-  bzero (yvec[0].elements, sizeof(float)*yvec[0].Nelements);
-  if (Nbins < 1) {
-      return (TRUE);
+
+  ResetVector (yvec, OPIHI_INT, Nbins);
+  bzero (yvec[0].elements.Int, sizeof(opihi_int)*yvec[0].Nelements);
+  if (Nbins < 1) return (TRUE);
+  OUT = yvec[0].elements.Int;
+
+  if (xvec[0].type == OPIHI_FLT) {
+    opihi_flt *V = xvec[0].elements.Flt;
+    for (i = 0; i < xvec[0].Nelements; i++, V++) {
+      if (isnan(*V)) continue;
+      bin = MIN (MAX (0, (*V - start) / delta), Nbins - 1);
+      OUT[bin]++;
+    }      
+  } else {
+    opihi_int *V = xvec[0].elements.Int;
+    for (i = 0; i < xvec[0].Nelements; i++, V++) {
+      if (isnan(*V)) continue;
+      bin = MIN (MAX (0, (*V - start) / delta), Nbins - 1);
+      OUT[bin]++;
+    }      
   }
-
-  V = xvec[0].elements;
-  for (i = 0; i < xvec[0].Nelements; i++, V++) {
-    if (isnan(*V)) continue;
-    bin = MIN (MAX (0, (*V - start) / delta), Nbins - 1);
-    yvec[0].elements[bin] += 1.0;
-  }      
 
   return (TRUE);
