Index: trunk/Ohana/src/opihi/cmd.data/vclip.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/vclip.c	(revision 7917)
+++ trunk/Ohana/src/opihi/cmd.data/vclip.c	(revision 20936)
@@ -3,7 +3,6 @@
 int vclip (int argc, char **argv) {
 
-  int i, Npix, DO_NAN, DO_INF, N;
+  int i, Npix, DO_NAN, DO_INF, DO_CLIP, N;
   double min, Vmin, max, Vmax, nan_val, inf_val;
-  float *in;
   Vector *vec;
 
@@ -33,4 +32,5 @@
   if ((vec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE);
 
+  DO_CLIP = FALSE;
   if (argc == 6) {
     min = atof (argv[2]);
@@ -38,36 +38,46 @@
     max = atof (argv[4]);
     Vmax = atof (argv[5]);
+    DO_CLIP = TRUE;
   }
 
+  if (DO_NAN && vec[0].type == OPIHI_INT) {
+    gprint (GP_ERR, "  warning : clipping on NAN is invalid for INT vectors\n");
+    return (FALSE);
+  }
+    
+  if (DO_INF && vec[0].type == OPIHI_INT) {
+    gprint (GP_ERR, "  warning : clipping on INF is invalid for INT vectors\n");
+    return (FALSE);
+  }
+    
   Npix = vec[0].Nelements;
-  in =   vec[0].elements;
 
-  if (argc == 6) {
+  if (vec[0].type == OPIHI_FLT) {
+    opihi_flt *in =  vec[0].elements.Flt;
     for (i = 0; i < Npix; i++, in++) {
-      if (*in < min) 
+      if (DO_CLIP && (*in < min)) {
 	*in = Vmin;
-      if (*in > max)
+      }
+      if (DO_CLIP && (*in > max)) {
 	*in = Vmax;
-    }
-  }
-  in = vec[0].elements;
-  if (DO_NAN) {
-    for (i = 0; i < Npix; i++, in++) {
-      if (isnan (*in)) {
+      }
+      if (!finite (*in) && DO_INF) {
+	*in = inf_val;
+      }
+      if (isnan (*in) && DO_NAN) {
 	*in = nan_val;
       }
     }
-  }
-  in = vec[0].elements;
-  if (DO_INF) {
+  } else {
+    opihi_int *in =  vec[0].elements.Int;
     for (i = 0; i < Npix; i++, in++) {
-      if (!finite (*in)) {
-	*in = inf_val;
+      if (DO_CLIP && (*in < min)) {
+	*in = Vmin;
+      }
+      if (DO_CLIP && (*in > max)) {
+	*in = Vmax;
       }
     }
   }
   return (TRUE);
-
 }
-
-
