diff --git a/NEWS b/NEWS
index 1135bab784341f5e2e1ec6d20b001c70471e65b9..1e8aa6eeb5ac546d0c61c08aa5311e96606cffbe 100644
--- a/NEWS
+++ b/NEWS
@@ -34,6 +34,8 @@ documents those changes that are of interest to users and administrators.
  -- Fix display for RoutePlugin parameter to display the correct value.
  -- Fix route/topology plugin to prevent segfault in sbcast when in use.
  -- Fix Cray slurmconfgen_smw.py script to use nid as nid, not nic.
+ -- Fix Cray NHC spawning on job requeue. Previous logic would leave nodes
+    allocated to a requeued job as non-usable on job termination.
 
 * Changes in Slurm 15.08.8
 ==========================
diff --git a/src/plugins/select/cray/select_cray.c b/src/plugins/select/cray/select_cray.c
index 2f9643743d3c5a232f8584234e6d50a41389cee9..f45703e7c35417fe29917cb5a791dcb207dae0b0 100644
--- a/src/plugins/select/cray/select_cray.c
+++ b/src/plugins/select/cray/select_cray.c
@@ -1824,12 +1824,16 @@ extern int select_p_job_begin(struct job_record *job_ptr)
 	xassert(job_ptr->select_jobinfo->data);
 
 	jobinfo = job_ptr->select_jobinfo->data;
+	jobinfo->cleaning = CLEANING_INIT;	/* Reset needed if requeued */
 
 	slurm_mutex_lock(&blade_mutex);
 
-	if (!jobinfo->blade_map)
+	if (!jobinfo->blade_map) {
 		jobinfo->blade_map = bit_alloc(blade_cnt);
-
+	} else {	/* Clear vestigial bitmap in case job requeued */
+		bit_nclear(jobinfo->blade_map, 0,
+			   bit_size(jobinfo->blade_map) - 1);
+	}
 	_set_job_running(job_ptr);
 
 	/* char *tmp3 = bitmap2node_name(blade_nodes_running_npc); */