diff --git a/compiler/generic/new-genesis.lisp b/compiler/generic/new-genesis.lisp
index 1d3c8660faa609a6f64b3c5bcc1b04d57e9391e1..dcf39281e08ca48fc1c54b4e23a7dfc3daf9b082 100644
--- a/compiler/generic/new-genesis.lisp
+++ b/compiler/generic/new-genesis.lisp
@@ -4,7 +4,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.39 1999/09/09 16:31:08 pw Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/new-genesis.lisp,v 1.40 2000/10/23 20:20:48 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -711,6 +711,8 @@
 
     (frob *free-interrupt-context-index* (make-fixnum-descriptor 0))
 
+    (frob *batch-mode* (cold-intern nil))
+
     (frob *initial-layouts* (list-all-layouts))
 
     (let ((res *nil-descriptor*))
diff --git a/lisp/lisp.c b/lisp/lisp.c
index 5c562f207633450ccb912b8c216e1b7fd3e8af5d..fed153d567a8d6293de8ff89c0b68c0d78e6e6dc 100644
--- a/lisp/lisp.c
+++ b/lisp/lisp.c
@@ -1,7 +1,7 @@
 /*
  * main() entry point for a stand alone lisp image.
  *
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lisp.c,v 1.17 2000/10/16 17:30:01 dtc Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/lisp.c,v 1.18 2000/10/23 20:20:42 dtc Exp $
  *
  */
 
@@ -89,7 +89,6 @@ void main(int argc, char *argv[], char *envp[])
     char *arg, **argptr;
     char *core = NULL, *default_core;
     boolean monitor;
-    lispobj batch_mode;
     lispobj initial_function;
 
 #ifdef MACH
@@ -102,7 +101,6 @@ void main(int argc, char *argv[], char *envp[])
     set_lossage_handler(ldb_monitor);
 
     monitor = FALSE;
-    batch_mode = NIL;
 
     argptr = argv;
     while ((arg = *++argptr) != NULL) {
@@ -120,9 +118,6 @@ void main(int argc, char *argv[], char *envp[])
 	else if (strcmp(arg, "-monitor") == 0) {
 	    monitor = TRUE;
 	}
-	else if (strcmp(arg, "-batch") == 0) {
-	    batch_mode = T;
-	}
     }
 
     default_core = arch_init();
@@ -220,10 +215,23 @@ void main(int argc, char *argv[], char *envp[])
     /* Convert the argv and envp to something Lisp can grok. */
     SetSymbolValue(LISP_COMMAND_LINE_LIST, alloc_str_list(argv));
     SetSymbolValue(LISP_ENVIRONMENT_LIST, alloc_str_list(envp));
-    SetSymbolValue(BATCH_MODE, batch_mode);
 
-    /* Pick off sigint until the lisp system gets far enough along to */
-    /* install it's own. */
+    /*
+     * Parse the command line again, picking up values that override
+     * those loaded from the core.
+     */
+
+    argptr = argv;
+    while ((arg = *++argptr) != NULL)
+      {
+	if (strcmp(arg, "-batch") == 0)
+	  SetSymbolGlobalValue(BATCH_MODE, T);
+      }
+
+    /*
+     * Pick off sigint until the lisp system gets far enough along to
+     * install it's own.
+     */
     sigint_init();
 
     if (monitor)