Prorate an annual subscription refund
When a subscriber cancels early, the unused portion of the annual fee is refunded proportionally.
- Refund equals annualAmount × (12 − monthsUsed) ÷ 12, using integer division (floor).
- monthsUsed is clamped to the range 0..12 before computing.
- monthsUsed 0 yields the full annualAmount; monthsUsed 12 yields 0.
prorate_refund(annual_amount: int, months_used: int) → int
Where you start
def prorate_refund(annual_amount: int, months_used: int) -> int:
Worked examples
| Call | Result |
|---|---|
prorate_refund(12000, 0) | 12000 |
prorate_refund(12000, 12) | 0 |
prorate_refund(12000, 3) | 9000 |
prorate_refund(10000, 5) | 5833 |
Hint
Clamp first, then multiply before dividing.
Reference solution in Python
def prorate_refund(annual_amount: int, months_used: int) -> int:
m = max(0, min(12, months_used))
return annual_amount * (12 - m) // 12