diff --git a/NEWS b/NEWS
index 1b75715276af1aef56fcb7f54436f2541ec77057..f039aa7715d3a1874ec185990a8743a393f9f7cd 100644
--- a/NEWS
+++ b/NEWS
@@ -67,6 +67,7 @@ documents those changes that are of interest to users and administrators.
     limit, rather than reserve resources for it when the next job ends, don't
     reserve any resources for it.
  -- Avoid slurmstepd abort if malloc fails during accounting gather operation.
+ -- Fix nodes from being overallocated when allocation straddles multiple nodes.
 
 * Changes in Slurm 15.08.6
 ==========================
diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c
index a656c205f5c2b847ee62bfd91b5a346802667564..f8770f527d97ba4e95b40b217af545fd80baa669 100644
--- a/src/slurmctld/step_mgr.c
+++ b/src/slurmctld/step_mgr.c
@@ -2629,8 +2629,10 @@ extern slurm_step_layout_t *step_layout_create(struct step_record *step_ptr,
 			if ((job_resrcs_ptr->whole_node != 1)
 			    && (slurmctld_conf.select_type_param
 				& (CR_CORE | CR_SOCKET))
-			    && (job_ptr->details->cpu_bind_type
-				& CPU_BIND_ONE_THREAD_PER_CORE)) {
+			    && ((job_ptr->details->cpu_bind_type !=
+				 (uint16_t)NO_VAL)
+				&& (job_ptr->details->cpu_bind_type
+				    & CPU_BIND_ONE_THREAD_PER_CORE))) {
 				uint16_t threads;
 				if (slurmctld_conf.fast_schedule)
 					threads = node_ptr->config_ptr->threads;