Index: /trunk/pstamp/src/Makefile.am
===================================================================
--- /trunk/pstamp/src/Makefile.am	(revision 36059)
+++ /trunk/pstamp/src/Makefile.am	(revision 36060)
@@ -1,3 +1,3 @@
-bin_PROGRAMS = ppstamp pstamprequest pstampdump
+bin_PROGRAMS = ppstamp pstampdump
 
 include_HEADERS = \
Index: /trunk/pstamp/src/ppstampMakeStamp.c
===================================================================
--- /trunk/pstamp/src/ppstampMakeStamp.c	(revision 36059)
+++ /trunk/pstamp/src/ppstampMakeStamp.c	(revision 36060)
@@ -20,4 +20,5 @@
 static bool setMaskedToNAN(pmConfig *config, psImage *image, psImage *mask, psImage *variance);
 static bool copySources(pmReadout *outputReadout, pmReadout *inputReadout, pmReadout *astromReadout, psRegion extractRegion);
+static bool imageHasValidPixels(psImage *image);
 
 // convert the input chip's transforms to the output
@@ -337,4 +338,7 @@
             status = false;
             break;
+        }
+        if (!imageHasValidPixels(outReadout->image)) {
+            return PSTAMP_NO_VALID_PIXELS;
         }
         if (readout->variance) {
@@ -885,2 +889,19 @@
     return true;
 }
+
+static bool
+imageHasValidPixels(psImage *image) {
+    // check F32 image and return true if any pixel is finite
+    if (image->type.type != PS_TYPE_F32) {
+        return true;
+    }
+    for (int y=0; y<image->numRows; y++) {
+        for (int x=0; x<image->numCols; x++) {
+            psF32 pixel = image->data.F32[y][x];
+            if (isfinite(pixel)) {
+                return true;
+            }
+        }
+    }
+    return false;
+}
Index: /trunk/pstamp/src/pstamp.h
===================================================================
--- /trunk/pstamp/src/pstamp.h	(revision 36059)
+++ /trunk/pstamp/src/pstamp.h	(revision 36060)
@@ -15,5 +15,5 @@
 	PSTAMP_DUP_REQUEST      = 20,
 	PSTAMP_INVALID_REQUEST  = 21,
-	PSTAMP_UNKNOWN_PRODUCT  = 22,
+	PSTAMP_UNKNOWN_PROJECT  = 22,
 	PSTAMP_NO_IMAGE_MATCH   = 23,
 	PSTAMP_NOT_DESTREAKED   = 24,
@@ -21,5 +21,7 @@
 	PSTAMP_GONE             = 26,
 	PSTAMP_NO_JOBS_QUEUED   = 27,
-        PSTAMP_NO_OVERLAP       = 28
+        PSTAMP_NO_OVERLAP       = 28,
+        PSTAMP_NOT_AUTHORIZED   = 29,
+        PSTAMP_NO_VALID_PIXELS  = 30,
 } pstampJobErrors;
 
@@ -34,6 +36,6 @@
 #define PSTAMP_SELECT_BACKMDL       32
 #define PSTAMP_SELECT_JPEG          64
-// unused                           128
-// unused                           256
+#define PSTAMP_SELECT_EXP           128
+#define PSTAMP_SELECT_NUM           256
 #define PSTAMP_SELECT_UNCOMPRESSED  512
 #define PSTAMP_SELECT_INVERSE       1024
@@ -44,6 +46,8 @@
 
 #define PSTAMP_NO_WAIT_FOR_UPDATE   32768
+#ifdef notdef
 #define PSTAMP_REQUEST_UNCENSORED  0x10000
 #define PSTAMP_REQUIRE_UNCENSORED  0x20000
+#endif
 
 #define PSTAMP_CENTER_IN_PIXELS 1
