diff --git a/NEWS b/NEWS
index 0c1a454dab9260252252fe9be0176e32c81d441d..2e1bac7290f8f079ddbfa719643e608cb12e627f 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,7 @@ documents those changes that are of interest to users and administrators.
     and it doesn't meet basic requirements.
  -- burst_buffer/cray - Fix for script creating or deleting persistent buffer
     would fail "paths" operation and hold the job.
+ -- power/cray - Prevent possible divide by zero.
 
 * Changes in Slurm 15.08.10
 ===========================
diff --git a/src/plugins/power/cray/power_cray.c b/src/plugins/power/cray/power_cray.c
index e0ef5ac7788464275b7e9c83b2993e3346820a0e..1afce377eaa79e895ffbf8f6629975b0bcf05a0a 100644
--- a/src/plugins/power/cray/power_cray.c
+++ b/src/plugins/power/cray/power_cray.c
@@ -1437,13 +1437,16 @@ static void _rebalance_node_power(void)
 	if ((alloc_power > cap_watts) || (node_power_needed > avail_power)) {
 		/* When CapWatts changes, we might need to lower nodes more
 		 * than the configured change rate specifications */
-		uint32_t red1 = 0, red2 = 0;
+		uint32_t red1 = 0, red2 = 0, node_num;
 		if (alloc_power > cap_watts)
 			red1 = alloc_power - cap_watts;
 		if (node_power_needed > avail_power)
 			red2 = node_power_needed - avail_power;
 		red1 = MAX(red1, red2);
-		red1 /= (node_power_lower_cnt + node_power_same_cnt);
+		node_num = node_power_lower_cnt + node_power_same_cnt;
+		if (node_num == 0)
+			node_num = node_record_count;
+		red1 /= node_num;
 		for (i = 0, node_ptr = node_record_table_ptr;
 		     i < node_record_count; i++, node_ptr++) {
 			if (!node_ptr->power || !node_ptr->power->new_cap_watts)