diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 500f7899b6e02ef554d5cd48d6feed74d425709e..b9a26d74c535168ea7afab91d5f1df08704c2e53 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -237,10 +237,8 @@ struct job_record *create_job_record(int *error_code)
 	struct job_details *detail_ptr;
 
 	if (job_count >= slurmctld_conf.max_job_cnt) {
-		error("create_job_record: job_count exceeds MaxJobCount limit "
-		      "configured");
-		*error_code = EAGAIN;
-		return NULL;
+		error("create_job_record: MaxJobCount reached (%u)",
+		      slurmctld_conf.max_job_cnt);
 	}
 
 	job_count++;
@@ -2956,7 +2954,7 @@ struct job_record *_job_rec_copy(struct job_record *job_ptr)
 		return job_ptr_new;
 
 	/* Set job-specific ID and hash table */
-	if (_set_job_id(job_ptr_new))
+	if (_set_job_id(job_ptr_new) != SLURM_SUCCESS)
 		fatal("job array create_job_record error");
 	_add_job_hash(job_ptr_new);
 
@@ -4904,6 +4902,10 @@ extern int validate_job_create_req(job_desc_msg_t * job_desc)
 			      job_count, i, slurmctld_conf.max_job_cnt);
 			return EAGAIN;
 		}
+	} else if (job_count >= slurmctld_conf.max_job_cnt) {
+		error("create_job_record: MaxJobCount limit reached (%u)",
+		      slurmctld_conf.max_job_cnt);
+		return EAGAIN;
 	}
 
 	/* Make sure anything that may be put in the database will be
@@ -7329,15 +7331,16 @@ extern uint32_t get_next_job_id(void)
 static int _set_job_id(struct job_record *job_ptr)
 {
 	int i;
-	uint32_t new_id;
-
-	job_id_sequence = MAX(job_id_sequence, slurmctld_conf.first_job_id);
+	uint32_t new_id, max_jobs;
 
 	xassert(job_ptr);
 	xassert (job_ptr->magic == JOB_MAGIC);
 
+	job_id_sequence = MAX(job_id_sequence, slurmctld_conf.first_job_id);
+	max_jobs = slurmctld_conf.max_job_id - slurmctld_conf.first_job_id;
+
 	/* Insure no conflict in job id if we roll over 32 bits */
-	for (i = 0; i < 1000; i++) {
+	for (i = 0; i < max_jobs; i++) {
 		if (++job_id_sequence >= slurmctld_conf.max_job_id)
 			job_id_sequence = slurmctld_conf.first_job_id;
 		new_id = job_id_sequence;