Index: /trunk/magic/remove/src/streaksrelease.c
===================================================================
--- /trunk/magic/remove/src/streaksrelease.c	(revision 27467)
+++ /trunk/magic/remove/src/streaksrelease.c	(revision 27468)
@@ -50,5 +50,7 @@
         strkGetMaskValues(sfiles);
 
-        setMaskedToNAN(sfiles, sfiles->maskMask, true);
+        if (!sfiles->inImage->imagecube) {
+            setMaskedToNAN(sfiles, sfiles->maskMask, true);
+        }
 
         // write out the destreaked temporary images and the recovery images
@@ -222,9 +224,6 @@
     if (sf->inImage->image) {
         setupImageRefs(sf->outImage, sf->recImage, sf->inImage, sf->extnum, exciseAll);
-    } else if (sf->inImage->imagecube) {
-        // Image cubes should have been excised in the destreaking process
-        streaksExit("unexpected imagecube found", PS_EXIT_CONFIG_ERROR);
     }  else {
-        return false;
+        // image cubes are handled specially
     }
 
@@ -274,4 +273,5 @@
 
 
+// XXXX: why isn't this in streaksio.c ?? See also streakremove.c
 static void
 writeImages(streakFiles *sf, bool exciseImageCube)
@@ -299,18 +299,4 @@
         }
 
-        // borrow one of the images from the imagecube and set it to init value
-        psImage *image = psArrayGet (sf->inImage->imagecube, 0);
-        psMemIncrRefCounter(image);
-        psImageInit(image, initValue);
-        if (exciseImageCube) {
-            sf->outImage->image = image;
-            writeImage(sf->outImage, extname, sf->extnum);
-        } else {
-            // write zero valued image to reccovery
-            if (sf->recImage) {
-                sf->recImage->image = image;
-                writeImage(sf->recImage, extname, sf->extnum);
-            }
-        }
         // Assumption: there are no mask and weight images for video cells
         return;
