diff --git a/NEWS b/NEWS
index 5037cffb151254e8ef90e6017c521c50e7bff1b0..42ff5ed5407c55d373e79abf7f543b710b8ee51c 100644
--- a/NEWS
+++ b/NEWS
@@ -365,6 +365,8 @@ documents those changes that are of interest to users and administrators.
  -- sview - Fix displaying of suspended steps elapsed times.
  -- Increase number of messages that get cached before throwing them away
     when the DBD is down.
+ -- Fix jobs from starting in overlapping reservations that won't finish before
+    a "maint" reservation begins.
 
 * Changes in Slurm 14.03.10
 ===========================
diff --git a/src/slurmctld/reservation.c b/src/slurmctld/reservation.c
index 806fd7900891d2baa76cf4e5055b6517c0336402..888d59153eecebd1150ccae9cbe46f9dcaf2f832 100644
--- a/src/slurmctld/reservation.c
+++ b/src/slurmctld/reservation.c
@@ -4087,7 +4087,8 @@ extern int job_test_resv(struct job_record *job_ptr, time_t *when,
 		iter = list_iterator_create(resv_list);
 		while ((res2_ptr = (slurmctld_resv_t *) list_next(iter))) {
 			if ((resv_ptr->flags & RESERVE_FLAG_MAINT) ||
-			    (resv_ptr->flags & RESERVE_FLAG_OVERLAP) ||
+			    ((resv_ptr->flags & RESERVE_FLAG_OVERLAP) &&
+			     !(res2_ptr->flags & RESERVE_FLAG_MAINT)) ||
 			    (res2_ptr == resv_ptr) ||
 			    (res2_ptr->node_bitmap == NULL) ||
 			    (res2_ptr->start_time >= job_end_time) ||