diff --git a/src/slurmd/req.c b/src/slurmd/req.c
index 62169b309c34eb9a479a75ea3fa023bc67f55ff0..e78bd4f42bf9dce04fb15541c6c4910e3641d04d 100644
--- a/src/slurmd/req.c
+++ b/src/slurmd/req.c
@@ -185,7 +185,7 @@ _fork_new_slurmd(void)
 			break;
 	}
 
-	return pid;
+	return((int) pid);
 }
 
 static int
@@ -196,7 +196,7 @@ _launch_batch_job(batch_job_launch_msg_t *req, slurm_addr *cli)
 	if ((retval = _fork_new_slurmd()) == 0) 
 		exit (mgr_launch_batch_job(req, cli));
 
-	return retval;
+	return (retval <= 0) ? retval : 0;
 }
 
 static int
@@ -207,7 +207,7 @@ _launch_tasks(launch_tasks_request_msg_t *req, slurm_addr *cli)
 	if ((retval = _fork_new_slurmd()) == 0)
 		exit (mgr_launch_tasks(req, cli));
 
-	return retval;
+	return (retval <= 0) ? retval : 0;
 }
 				                                            
 static int