diff --git a/src/plugins/select/serial/select_serial.c b/src/plugins/select/serial/select_serial.c
index 7f08f7180f98a6658b5f948fa9379978453cb927..8e45076a2cc6c573ceb0e7623b870809927e36f1 100644
--- a/src/plugins/select/serial/select_serial.c
+++ b/src/plugins/select/serial/select_serial.c
@@ -2130,6 +2130,7 @@ extern bitstr_t * select_p_resv_test(bitstr_t *avail_bitmap, uint32_t node_cnt,
 	int rem_nodes = node_cnt;
 	int rem_cores = core_cnt;
 	bitstr_t *new_bitmap;
+	bool enforce_node_cnt = (node_cnt != 0);
 
 	xassert(avail_bitmap);
 	new_bitmap = bit_copy(avail_bitmap);
@@ -2160,7 +2161,6 @@ extern bitstr_t * select_p_resv_test(bitstr_t *avail_bitmap, uint32_t node_cnt,
 			continue;
 		}
 
-		rem_nodes--;
 		for (j = 0; j < node_cores; j++) {
 			if (bit_test(*core_bitmap, core_inx)) {
 				bit_clear(*core_bitmap, core_inx);
@@ -2170,6 +2170,9 @@ extern bitstr_t * select_p_resv_test(bitstr_t *avail_bitmap, uint32_t node_cnt,
 			}
 			core_inx++;
 		}
+		rem_nodes--;
+		if (enforce_node_cnt && (rem_nodes <= 0))
+			break;
 	}
 	if ((rem_cores > 0) || (rem_nodes > 0))
 		FREE_NULL_BITMAP(new_bitmap);
diff --git a/testsuite/expect/test4.12 b/testsuite/expect/test4.12
index ce6dde92d09d645a916acfc0f2eff46bd79f40c0..7aabf3369811d1449ebb35f47a1d528afe413f7d 100755
--- a/testsuite/expect/test4.12
+++ b/testsuite/expect/test4.12
@@ -188,6 +188,13 @@ proc sinfo_test_2 { node proc_cnt total_procs } {
 			}
 			exp_continue
 		}
+		-re "mix ($number)(K?) $node" {
+			set num_alloc $expect_out(1,string)
+			if {[string compare $expect_out(2,string) ""]} {
+				set num_alloc [expr $inode_procs * 1024]
+			}
+			exp_continue
+		}
 		-re $prompt {
 		}
 		timeout {