Index: /branches/eam_branches/ipp-20150405/Ohana/src/opihi/cmd.data/imhist.c
===================================================================
--- /branches/eam_branches/ipp-20150405/Ohana/src/opihi/cmd.data/imhist.c	(revision 38141)
+++ /branches/eam_branches/ipp-20150405/Ohana/src/opihi/cmd.data/imhist.c	(revision 38142)
@@ -3,12 +3,12 @@
 int imhist (int argc, char **argv) {
   
-  int i, j, N, Nbins, Quiet;
-  int sx, sy, nx, ny, bin;
-  float *V, delta;
-  double max, min, dx;
+  int i, j, N, Nbins;
+  int bin;
+  float *V;
+  double dx;
   Vector *vec1, *vec2;
   Buffer *buf;
 
-  Quiet = FALSE;
+  int Quiet = FALSE;
   if ((N = get_argument (argc, argv, "-q"))) {
     Quiet = TRUE;
@@ -20,5 +20,5 @@
   }
 
-  delta = 0;
+  float delta = 0;
   if ((N = get_argument (argc, argv, "-delta"))) {
     remove_argument (N, &argc, argv);
@@ -27,5 +27,11 @@
   }
 
-  min = max = 0.0;
+  int ClipNAN = FALSE;
+  if ((N = get_argument (argc, argv, "-clip-nan"))) {
+    remove_argument (N, &argc, argv);
+    ClipNAN = TRUE;
+  }  
+
+  double min = 0.0, max = 0.0;
   if ((N = get_argument (argc, argv, "-range"))) {
     remove_argument (N, &argc, argv);
@@ -36,6 +42,6 @@
   }
 
-  sx = sy = 0.0;
-  nx = ny = 0.0;
+  int sx = 0, sy = 0;
+  int nx = 0, ny = 0;
   if ((N = get_argument (argc, argv, "-region"))) {
     remove_argument (N, &argc, argv);
@@ -84,4 +90,5 @@
       V = (float *)(buf[0].matrix.buffer) + j*buf[0].matrix.Naxis[0] + sx; 
       for (i = 0; i < nx; i++, V++) {
+	if (ClipNAN && isnan(*V)) continue;
 	max = MAX (max, *V);
 	min = MIN (min, *V);
@@ -113,4 +120,5 @@
     V = (float *)(buf[0].matrix.buffer) + j*buf[0].matrix.Naxis[0] + sx; 
     for (i = 0; i < nx; i++, V++) {
+      if (ClipNAN && isnan(*V)) continue;
       bin = MAX (MIN (Nbins, (*V - min) / dx), 0);
       vec2[0].elements.Flt[bin] += 1.0;
