Pda not updating on caller on CPI (using PDA)

I’m writing a simple contract in which a master program owns a PDA and it passes it through CPI (with mutable access) to a puppet program.
I’m able to run the instruction and update the value of the account in the puppet. I can see it on the logs. However, when I check on the caller (same instruction right after the CPI) the values aren’t updated. I’ve tried calling .reload() using anchor, but nothing changes.

Any ideas?

    pub fn calculate(ctx: Context<Calculate>, bump: u8) -> Result<u64> {
        let seeds = &[b"some_seeds".as_ref(), &[bump]];
        let signer = &[&seeds[..]];
        let parameters = ctx.accounts.parameters.to_account_info();
        let cpi_accounts = CalculateNumber {
            parameters: parameters,
        };
        let cpi_program = ctx.accounts.puppet_program.to_account_info();
        let cpi_ctx = CpiContext::new_with_signer(cpi_program, cpi_accounts, signer);
        // this instruction updates the value of the account
        calculator::cpi::calculate(cpi_ctx)?;
        ctx.accounts.parameters.reload()?;
        // the value of the account has not changed!
        Ok(ctx.accounts.parameters.value)
    }
}