diff --git a/src/plugins/sched/backfill/backfill.c b/src/plugins/sched/backfill/backfill.c
index aa8625e9fe7b2b88fa20ac8dc31bbc22aef3362c..25fa1fb9a9d73cde388a6b9b2578d196be41f734 100644
--- a/src/plugins/sched/backfill/backfill.c
+++ b/src/plugins/sched/backfill/backfill.c
@@ -1322,12 +1322,20 @@ static void _add_reservation(uint32_t start_time, uint32_t end_reserve,
 	bool placed = false;
 	int i, j;
 
+#if 0	
+	info("add job start:%u end:%u", start_time, end_reserve);
 	for (j = 0; ; ) {
-		if ((node_space[j].begin_time >= start_time) ||
-		    (node_space[j].end_time   == start_time)) {
-			/* no need to insert new start entry record */
-			placed = true;
-		} else if (node_space[j].end_time > start_time) {
+		info("node start:%u end:%u",
+		     (uint32_t) node_space[j].begin_time,
+		     (uint32_t) node_space[j].end_time);
+		if ((j = node_space[j].next) == 0)
+			break;
+	}
+#endif
+
+	start_time = MAX(start_time, node_space[0].begin_time);
+	for (j = 0; ; ) {
+		if (node_space[j].end_time > start_time) {
 			/* insert start entry record */
 			i = *node_space_recs;
 			node_space[i].begin_time = start_time;
@@ -1340,10 +1348,12 @@ static void _add_reservation(uint32_t start_time, uint32_t end_reserve,
 			(*node_space_recs)++;
 			placed = true;
 		}
+		if (node_space[j].end_time == start_time) {
+			/* no need to insert new start entry record */
+			placed = true;
+		}
 		if (placed == true) {
 			while ((j = node_space[j].next)) {
-				if (end_reserve == node_space[j].end_time)
-					break;
 				if (end_reserve < node_space[j].end_time) {
 					/* insert end entry record */
 					i = *node_space_recs;
@@ -1359,6 +1369,9 @@ static void _add_reservation(uint32_t start_time, uint32_t end_reserve,
 					(*node_space_recs)++;
 					break;
 				}
+				if (end_reserve == node_space[j].end_time) {
+					break;
+				}
 			}
 			break;
 		}