Index: /branches/eam_branches/ohana.20190329/src/opihi/cmd.data/cut.c
===================================================================
--- /branches/eam_branches/ohana.20190329/src/opihi/cmd.data/cut.c	(revision 40791)
+++ /branches/eam_branches/ohana.20190329/src/opihi/cmd.data/cut.c	(revision 40792)
@@ -59,18 +59,26 @@
       /* accumulate values */
       Vin = (float *)(buf[0].matrix.buffer) + sy*Nx + sx + i; 
+      int Npix = 0;
       for (j = 0; j < ny; j++, Vin += Nx) {
+	if (!isfinite(*Vin)) continue;
 	Vbuf[j] = *Vin;
+	Npix ++;
+      }
+      if (Npix == 0) {
+	value = NAN;
+	goto set_yvalue;
       }
       /* apply stat of choice */
       if (Mode == MEDIAN) {
-	fsort (Vbuf, ny);
-	value = Vbuf[(int)(0.5*ny)];
+	fsort (Vbuf, Npix);
+	value = Vbuf[(int)(0.5*Npix)];
       } else {
 	value = 0;
-	for (j = 0; j < ny; j++) {
+	for (j = 0; j < Npix; j++) {
 	  value += Vbuf[j];
 	}
-	if (Mode == MEAN) { value /= ny; }
+	if (Mode == MEAN) { value /= Npix; }
       }
+    set_yvalue:
       yvec[0].elements.Flt[i] = value;
     }
@@ -91,18 +99,26 @@
       /* accumulate values */
       Vin = (float *)(buf[0].matrix.buffer) + (sy + i)*Nx + sx; 
+      int Npix = 0;
       for (j = 0; j < nx; j++, Vin ++) {
+	if (!isfinite(*Vin)) continue;
 	Vbuf[j] = *Vin;
+	Npix ++;
+      }
+      if (Npix == 0) {
+	value = NAN;
+	goto set_xvalue;
       }
       /* apply stat of choice */
       if (Mode == MEDIAN) {
-	fsort (Vbuf, nx);
-	value = Vbuf[(int)(0.5*nx)];
+	fsort (Vbuf, Npix);
+	value = Vbuf[(int)(0.5*Npix)];
       } else {
 	value = 0;
-	for (j = 0; j < nx; j++) {
+	for (j = 0; j < Npix; j++) {
 	  value += Vbuf[j];
 	}
-	if (Mode == MEAN) { value /= nx; }
+	if (Mode == MEAN) { value /= Npix; }
       }
+    set_xvalue:
       yvec[0].elements.Flt[i] = value;
     }
