diff --git a/NEWS b/NEWS
index 223d743a22adb11194e0a436082dd2b48e897ebb..d115ac357c8f3bde5705bcecdc3f98c5250a9f27 100644
--- a/NEWS
+++ b/NEWS
@@ -172,6 +172,8 @@ documents those changes that are of interest to users and admins.
     different connection types (i.e. one torus, one mesh).
  -- Fix memory leak if MPI ports are reserved (for OpenMPI) and srun's
     --resv-ports option is used.
+ -- Fix some anomalies in select/cons_res task layout when using the 
+    --cpus-per-task option. Patch from Martin Perry, Bull.
 
 * Changes in SLURM 2.2.4
 ========================
diff --git a/src/plugins/select/cons_res/job_test.c b/src/plugins/select/cons_res/job_test.c
index f11f248daa234b9cc258f27ee77221a2874cb038..514f960e716a27f372e03c5ded17a94507b66160 100644
--- a/src/plugins/select/cons_res/job_test.c
+++ b/src/plugins/select/cons_res/job_test.c
@@ -512,7 +512,8 @@ uint16_t _allocate_cores(struct job_record *job_ptr, bitstr_t *core_map,
 	} else {
 		j = avail_cpus / cpus_per_task;
 		num_tasks = MIN(num_tasks, j);
-		avail_cpus = num_tasks * cpus_per_task;
+		if (job_ptr->details->ntasks_per_node)
+			avail_cpus = num_tasks * cpus_per_task;
 	}
 
 	if ((job_ptr->details->ntasks_per_node &&