Index: /trunk/source/level-1/l1-sysio.lisp
===================================================================
--- /trunk/source/level-1/l1-sysio.lisp	(revision 15269)
+++ /trunk/source/level-1/l1-sysio.lisp	(revision 15270)
@@ -814,5 +814,9 @@
 					      (:output #$O_WRONLY)
 					      (:io #$O_RDWR)))))
-	  (when (< fd 0)  (signal-file-error fd filename))
+	  (when (< fd 0)
+            (if (and (eql fd (- #$ENOENT))
+                     (null if-does-not-exist))
+              (return-from open nil)
+              (signal-file-error fd filename)))
 	  (let* ((pos (fd-lseek fd 0 #$SEEK_CUR)))
 	    (if (not (>= pos 0))
