diff --git a/src/slurmctld/acct_policy.c b/src/slurmctld/acct_policy.c
index ab447b77449c8f34669a5b5d33c5cda8370c7a46..8294d53d945b2e659facab3da6f47bc6cced75a0 100644
--- a/src/slurmctld/acct_policy.c
+++ b/src/slurmctld/acct_policy.c
@@ -187,14 +187,14 @@ static void _adjust_limit_usage(int type, struct job_record *job_ptr)
 			break;
 		case ACCT_POLICY_REM_SUBMIT:
 			if (qos_ptr->usage->grp_used_submit_jobs)
-				qos_ptr->usage->grp_used_submit_jobs--;
+				qos_ptr->usage->grp_used_submit_jobs -= job_cnt;
 			else
 				debug2("acct_policy_remove_job_submit: "
 				       "grp_submit_jobs underflow for qos %s",
 				       qos_ptr->name);
 
 			if (used_limits->submit_jobs)
-				used_limits->submit_jobs--;
+				used_limits->submit_jobs -= job_cnt;
 			else
 				debug2("acct_policy_remove_job_submit: "
 				       "used_submit_jobs underflow for "
@@ -283,7 +283,7 @@ static void _adjust_limit_usage(int type, struct job_record *job_ptr)
 			break;
 		case ACCT_POLICY_REM_SUBMIT:
 			if (assoc_ptr->usage->used_submit_jobs)
-				assoc_ptr->usage->used_submit_jobs--;
+				assoc_ptr->usage->used_submit_jobs -= job_cnt;
 			else
 				debug2("acct_policy_remove_job_submit: "
 				       "used_submit_jobs underflow for "
diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 5acb40216d13f38a906e1d9d87e1698462fb6371..9853a8ee229a3cc57c5c2a59e566a021c629996f 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -3912,7 +3912,7 @@ extern int job_allocate(job_desc_msg_t * job_specs, int immediate,
 	_create_job_array(job_ptr, job_specs);
 
 	slurmctld_diag_stats.jobs_submitted +=
-		job_ptr->array_recs ?
+		(job_ptr->array_recs && job_ptr->array_recs->task_cnt) ?
 		job_ptr->array_recs->task_cnt : 1;
 
 	acct_policy_add_job_submit(job_ptr);