diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c
index bba9c77d04e6b175fd3ccefed46f421973fa01e5..fc81f41396a9faaba2b4ad186266828f0e729a8f 100644
--- a/src/slurmctld/node_mgr.c
+++ b/src/slurmctld/node_mgr.c
@@ -962,13 +962,13 @@ int update_node ( update_node_msg_t * update_node_msg )
 				bit_clear (idle_node_bitmap, node_inx);
 			}
 			else if (state_val == NODE_STATE_DRAINED) {
-				if (bit_test (idle_node_bitmap, node_inx) == 
-									false)
+				if (!bit_test (idle_node_bitmap, node_inx))
 					state_val = NODE_STATE_DRAINING;
 				bit_clear (up_node_bitmap, node_inx);
 			}
 			else if (state_val == NODE_STATE_DRAINING) {
-				if (bit_test (idle_node_bitmap, node_inx)) {
+				if (bit_test (idle_node_bitmap, node_inx) ||
+				    (!bit_test (up_node_bitmap, node_inx))) {
 					state_val = NODE_STATE_DRAINED;
 					bit_clear (idle_node_bitmap, node_inx);
 				}