diff --git a/src/c/symbols_list.h b/src/c/symbols_list.h
index 2d858d9..e0a1c15 100755
--- a/src/c/symbols_list.h
+++ b/src/c/symbols_list.h
@@ -1233,7 +1233,7 @@ cl_symbols[] = {
 {SYS_ "REPLACE-ARRAY", SI_ORDINARY, si_replace_array, 2, OBJNULL},
 {SYS_ "ROW-MAJOR-ASET", SI_ORDINARY, si_row_major_aset, 3, OBJNULL},
 {EXT_ "RUN-PROGRAM", EXT_ORDINARY, si_run_program, -1, OBJNULL},
-{SYS_ "WAIT-FOR-ALL-PROCESSES", SI_ORDINARY, si_wait_for_all_processes, 0, OBJNULL},
+{SYS_ "WAIT-FOR-ALL-PROCESSES", SI_ORDINARY, si_wait_for_all_processes, -1, OBJNULL},
 {EXT_ "SAFE-EVAL", EXT_ORDINARY, ECL_NAME(si_safe_eval), -1, OBJNULL},
 {SYS_ "SCH-FRS-BASE", SI_ORDINARY, si_sch_frs_base, 2, OBJNULL},
 {SYS_ "SCHAR-SET", SI_ORDINARY, si_char_set, 3, OBJNULL},
diff --git a/src/c/unixint.d b/src/c/unixint.d
index 47509a2..394d6af 100644
--- a/src/c/unixint.d
+++ b/src/c/unixint.d
@@ -561,7 +561,7 @@ asynchronous_signal_servicing_thread()
 		}
 #ifdef SIGCHLD
 		if (signal_thread_msg.signo == SIGCHLD) {
-			si_wait_for_all_processes();
+			si_wait_for_all_processes(0);
 			continue;
 		}
 #endif
@@ -1186,7 +1186,7 @@ asynchronous_signal_servicing_thread()
 #endif
 #ifdef SIGCHLD
                         if (signo == SIGCHLD) {
-                                si_wait_for_all_processes();
+                                si_wait_for_all_processes(0);
                                 continue;
                         }
 #endif
diff --git a/src/c/unixsys.d b/src/c/unixsys.d
index ef830ec..15379a5 100644
--- a/src/c/unixsys.d
+++ b/src/c/unixsys.d
@@ -289,8 +289,8 @@ ecl_waitpid(cl_object pid, cl_object wait)
         @(return status code pid)
 }
 
-cl_object
-si_wait_for_all_processes()
+@(defun si::wait-for-all-processes (&key (process ECL_NIL))
+@
 {
         const cl_env_ptr env = ecl_process_env();
 #if defined(SIGCHLD) && !defined(ECL_WINDOWS_HOST)
@@ -315,6 +315,7 @@ si_wait_for_all_processes()
 #endif
         ecl_return0(env);
 }
+@)
 
 #if defined(ECL_MS_WINDOWS_HOST) || defined(cygwin)
 cl_object
diff --git a/src/h/internal.h b/src/h/internal.h
index 191becd..75f22c4 100755
--- a/src/h/internal.h
+++ b/src/h/internal.h
@@ -517,7 +517,7 @@ extern cl_object mp_get_rwlock_write_wait(cl_object lock);
 extern void ecl_interrupt_process(cl_object process, cl_object function);
 
 /* unixsys.d */
-extern cl_object si_wait_for_all_processes();
+extern cl_object si_wait_for_all_processes _ECL_ARGS((cl_narg narg, ...));
 
 /*
  * Fake several ISO C99 mathematical functions
