Set the call price and watch the gain or loss against carrying value.
$100,000
$96,000
$0
let the issuer retire them before maturity at a stated call price. What is removed from the books is the — par net of whatever discount or premium is still unamortized — not par itself.
Pay more than carrying value to retire early, and the difference is a loss. Pay less, and it is a gain. Par value never enters the comparison directly.