diff --git a/substrate/frame/asset-rewards/src/lib.rs b/substrate/frame/asset-rewards/src/lib.rs
index 492868dbe532c4e08f8acf2cc74112ce6fc3e1c6..b1af28477197a3f2515c69382cc82156cbd08e2c 100644
--- a/substrate/frame/asset-rewards/src/lib.rs
+++ b/substrate/frame/asset-rewards/src/lib.rs
@@ -628,16 +628,13 @@ pub mod pallet {
 		/// NOTE: this is a pure function without side effects. It does not modify any state
 		/// directly, that is the responsibility of the caller.
 		pub fn update_pool_and_staker_rewards(
-			mut pool_info: PoolInfoFor<T>,
+			pool_info: PoolInfoFor<T>,
 			mut staker_info: PoolStakerInfo<T::Balance>,
 		) -> Result<(PoolInfoFor<T>, PoolStakerInfo<T::Balance>), DispatchError> {
-			let reward_per_token = Self::reward_per_token(&pool_info)?;
-
-			pool_info.last_update_block = frame_system::Pallet::<T>::block_number();
-			pool_info.reward_per_token_stored = reward_per_token;
+			let pool_info = Self::update_pool_rewards(pool_info)?;
 
 			staker_info.rewards = Self::derive_rewards(&pool_info, &staker_info)?;
-			staker_info.reward_per_token_paid = reward_per_token;
+			staker_info.reward_per_token_paid = pool_info.reward_per_token_stored;
 			return Ok((pool_info, staker_info));
 		}