Index: trunk/Ohana/src/opihi/cmd.data/cumulative.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/cumulative.c	(revision 10307)
+++ trunk/Ohana/src/opihi/cmd.data/cumulative.c	(revision 20936)
@@ -4,5 +4,5 @@
   
   int i;
-  float *Vi, *Vo;
+  opihi_flt *Vo;
   Vector *ivec, *ovec;
 
@@ -14,15 +14,23 @@
   if ((ivec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE);
   if ((ovec = SelectVector (argv[2], ANYVECTOR, TRUE)) == NULL) return (FALSE);
-  ovec[0].Nelements = ivec[0].Nelements;
-    
-  REALLOCATE (ovec[0].elements, float, ovec[0].Nelements);
-  bzero (ovec[0].elements, sizeof(float)*ovec[0].Nelements);
 
-  Vi = ivec[0].elements;
-  Vo = ovec[0].elements;
-  *Vo = *Vi;
-  for (i = 1; i < ivec[0].Nelements; i++, Vi++, Vo++) {
-    *Vo = Vo[-1] + *Vi;
-  }      
+  ResetVector (ovec, OPIHI_FLT, ivec[0].Nelements);
+  bzero (ovec[0].elements.Flt, sizeof(opihi_flt)*ovec[0].Nelements);
+
+  Vo = ovec[0].elements.Flt;
+
+  if (ivec[0].type == OPIHI_FLT) {
+    opihi_flt *Vi = ivec[0].elements.Flt;
+    *Vo = *Vi;
+    for (i = 1; i < ivec[0].Nelements; i++, Vi++, Vo++) {
+      *Vo = Vo[-1] + *Vi;
+    }      
+  } else {
+    opihi_int *Vi = ivec[0].elements.Int;
+    *Vo = *Vi;
+    for (i = 1; i < ivec[0].Nelements; i++, Vi++, Vo++) {
+      *Vo = Vo[-1] + *Vi;
+    }      
+  }
   return (TRUE);
 }
