@@ -3137,6 +3137,7 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
31373137
31383138 let slot = Clock :: get ( ) ?. slot ;
31393139 let state = & ctx. accounts . state ;
3140+ let now = Clock :: get ( ) ?. unix_timestamp ;
31403141
31413142 if !state. allow_settle_lp_pool ( ) {
31423143 msg ! ( "settle lp pool disabled" ) ;
@@ -3147,7 +3148,7 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
31473148 let amm_cache_key = & ctx. accounts . amm_cache . key ( ) ;
31483149 let mut amm_cache: AccountZeroCopyMut < ' _ , CacheInfo , _ > =
31493150 ctx. accounts . amm_cache . load_zc_mut ( ) ?;
3150- let quote_market = & ctx. accounts . quote_market . load_mut ( ) ?;
3151+ let quote_market = & mut ctx. accounts . quote_market . load_mut ( ) ?;
31513152 let mut quote_constituent = ctx. accounts . constituent . load_mut ( ) ?;
31523153 let constituent_token_account = & mut ctx. accounts . constituent_quote_token_account ;
31533154 let mut lp_pool = ctx. accounts . lp_pool . load_mut ( ) ?;
@@ -3180,9 +3181,14 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
31803181 None ,
31813182 ) ?;
31823183
3183- let precision_increase = SPOT_BALANCE_PRECISION . safe_div ( QUOTE_PRECISION ) ?;
31843184 let mint = Some ( * ctx. accounts . mint . clone ( ) ) ;
31853185
3186+ controller:: spot_balance:: update_spot_market_cumulative_interest (
3187+ & mut * quote_market,
3188+ None ,
3189+ now,
3190+ ) ?;
3191+
31863192 for ( _, perp_market_loader) in perp_market_map. 0 . iter ( ) {
31873193 let mut perp_market = perp_market_loader. load_mut ( ) ?;
31883194 if perp_market. lp_status == 0 {
@@ -3277,7 +3283,11 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
32773283 }
32783284
32793285 // Update market pools
3280- update_perp_market_pools ( & mut perp_market, & settlement_result, precision_increase) ?;
3286+ update_perp_market_pools_and_quote_market_balance (
3287+ & mut perp_market,
3288+ & settlement_result,
3289+ quote_market,
3290+ ) ?;
32813291
32823292 // Calculate new quote owed amount
32833293 let new_quote_owed = match settlement_result. direction {
@@ -3314,6 +3324,7 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
33143324 }
33153325
33163326 // Final validation
3327+ ctx. accounts . quote_token_vault . reload ( ) ?;
33173328 math:: spot_withdraw:: validate_spot_market_vault_amount (
33183329 quote_market,
33193330 ctx. accounts . quote_token_vault . amount ,
0 commit comments