diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 5c3e775813c324d1e2f389a3cf86353cb5f11a1a..5ae5c03c34375fc2fc1ec9ebb9fea9fa4a9786ed 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -10969,6 +10969,29 @@ extern void job_completion_logger(struct job_record  *job_ptr, bool requeue)
 		}
 	}
 
+	if (job_ptr->array_task_id != NO_VAL) {
+		struct job_record *base_job_ptr;
+		base_job_ptr = find_job_record(job_ptr->array_job_id);
+		if (base_job_ptr->array_recs) {
+			if (base_job_ptr->array_recs->tot_comp_tasks == 0) {
+				base_job_ptr->array_recs->min_exit_code =
+					job_ptr->exit_code;
+				base_job_ptr->array_recs->max_exit_code =
+					job_ptr->exit_code;
+			} else {
+				base_job_ptr->array_recs->min_exit_code =
+					MIN(job_ptr->exit_code, base_job_ptr->
+					    array_recs->min_exit_code);
+				base_job_ptr->array_recs->max_exit_code =
+					MAX(job_ptr->exit_code, base_job_ptr->
+					    array_recs->max_exit_code);
+			}
+			if (base_job_ptr->array_recs->tot_run_tasks)
+				base_job_ptr->array_recs->tot_run_tasks--;
+			base_job_ptr->array_recs->tot_comp_tasks++;
+		}
+	}
+
 	g_slurm_jobcomp_write(job_ptr);
 
 	/* When starting the resized job everything is taken care of