Modifying a rail lockup requires isAccountLockupFullySettled, but this is a bit confusingly named. It checks that the last settlement epoch is this epoch, but that's much stricter than whether the fixed lockup is settled. The error message "insufficient funds to cover the current lockup" is not necessarily correct.
https://github.com/FilOzone/filecoin-services-payments/blob/182b414d31005e6002c43eddfe7c4db344d1cdce/src/Payments.sol#L592-L603
Consider proceeding to optimistically change the lockup, and revert if necessary after calculating the actual funds needed.