diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 1999e787473997f38fd3482b1fb9baa358dcb316..a97ac05521f61336c2e5be30ea35d43b208c959f 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -1923,7 +1923,10 @@ static int _job_create(job_desc_msg_t * job_desc, int allocate, int will_run,
 		     job_desc->min_nodes, part_ptr->max_nodes_orig);
 		error_code = ESLURM_TOO_MANY_REQUESTED_NODES;
 		return error_code;
-	}
+	} else if ((job_desc->min_nodes < part_ptr->min_nodes_orig) &&
+		   ((job_desc->max_nodes == NO_VAL) ||
+		    (job_desc->max_nodes >= part_ptr->min_nodes_orig)))
+		job_desc->min_nodes = part_ptr->min_nodes_orig;
 
 	if (job_desc->max_nodes == NO_VAL) {
 #ifdef HAVE_BG