diff --git a/NEWS b/NEWS
index 08b8ce103d69a3f131ab3e4334cea53cf8e91747..7afdb59db1ac94f78378f9f3cb1dd822f1185c15 100644
--- a/NEWS
+++ b/NEWS
@@ -130,6 +130,9 @@ documents those changes that are of interest to users and admins.
     jobacct_gather_g_getinfo() until there is data to read from the socket.
  -- Fix typo in accounting when using reservations. Patch from Alejandro
     Lucero Palau.
+ -- Fix to the multifactor priority plugin to calculate effective usage earlier
+    to give a correct priority on the first decay cycle after a restart of the
+    slurmctld. Patch from Martin Perry, Bull.
 
 
 * Changes in SLURM 2.3.3
diff --git a/src/plugins/priority/multifactor/priority_multifactor.c b/src/plugins/priority/multifactor/priority_multifactor.c
index 99e2939726a8a934732a327e8b9e2f41690740d8..c296cb534b2dee571a977fe972234eb38f02b589 100644
--- a/src/plugins/priority/multifactor/priority_multifactor.c
+++ b/src/plugins/priority/multifactor/priority_multifactor.c
@@ -999,6 +999,12 @@ static void *_decay_thread(void *no_data)
 			}
 		}
 
+		/* now calculate all the normalized usage here */
+		assoc_mgr_lock(&locks);
+		_set_children_usage_efctv(
+			assoc_mgr_root_assoc->usage->childern_list);
+		assoc_mgr_unlock(&locks);
+
 		if (!last_ran)
 			goto get_usage;
 		else
@@ -1052,12 +1058,6 @@ static void *_decay_thread(void *no_data)
 		unlock_slurmctld(job_write_lock);
 
 	get_usage:
-		/* now calculate all the normalized usage here */
-		assoc_mgr_lock(&locks);
-		_set_children_usage_efctv(
-			assoc_mgr_root_assoc->usage->childern_list);
-		assoc_mgr_unlock(&locks);
-
 		last_ran = start_time;
 
 		_write_last_decay_ran(last_ran, last_reset);