diff --git a/src/srun/allocate.c b/src/srun/allocate.c
index 11f3146bbac28a44077abaa25fbcbb3504f358b9..13a7b815ae5c296db661a973c659fdb6074aafd5 100644
--- a/src/srun/allocate.c
+++ b/src/srun/allocate.c
@@ -381,6 +381,8 @@ job_desc_msg_create_from_opts (char *script)
 
 	if (opt.hold)
 		j->priority     = 0;
+	if (opt.jobid != NO_VAL)
+		j->job_id	= opt.jobid;
 
 #if SYSTEM_DIMENSIONS
 	if (opt.geometry[0] > 0) {
diff --git a/src/srun/srun.c b/src/srun/srun.c
index 4532dfe94f4f5a92b982eb61ba0c6e52600f6210..a6eb97ad098bf3fe9e9e338f68ded241e9baf1f7 100644
--- a/src/srun/srun.c
+++ b/src/srun/srun.c
@@ -167,21 +167,6 @@ int srun(int ac, char **av)
 		job = job_create_noalloc(); 
 		_switch_standalone(job);
 
-	} else if ( (resp = existing_allocation()) ) {
-		if (opt.allocate) {
-			error("job %u already has an allocation", 
-			      resp->job_id);
-			exit(1);
-		}
-		if (job_resp_hack_for_step(resp))	/* FIXME */
-			exit(1);
-		job = job_create_allocation(resp); 
-		job->old_job = true;
-		sig_setup_sigmask();
-		if (create_job_step(job) < 0)
-			exit(1);
-		slurm_free_resource_allocation_response_msg(resp);
-
 	} else if (opt.allocate) {
 		sig_setup_sigmask();
 		if ( !(resp = allocate_nodes()) ) 
@@ -205,6 +190,21 @@ int srun(int ac, char **av)
 		xfree(env);
 		exit (exitcode);
 
+	} else if ( (resp = existing_allocation()) ) {
+		if (opt.allocate) {
+			error("job %u already has an allocation",
+				resp->job_id);
+			exit(1);
+		}
+		if (job_resp_hack_for_step(resp))	/* FIXME */
+			exit(1);
+		job = job_create_allocation(resp);
+		job->old_job = true;
+		sig_setup_sigmask();
+		if (create_job_step(job) < 0)
+			exit(1);
+		slurm_free_resource_allocation_response_msg(resp);
+		
 	} else if (mode == MODE_ATTACH) {
 		reattach();
 		exit (0);