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.
prorateRefund(annualAmount: int, monthsUsed: int) → int
Go needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.
Where you start
func prorateRefund(annualAmount int, monthsUsed int) int {
}
Worked examples
| Call | Result |
|---|---|
prorateRefund(12000, 0) | 12000 |
prorateRefund(12000, 12) | 0 |
prorateRefund(12000, 3) | 9000 |
prorateRefund(10000, 5) | 5833 |
Hint
Clamp first, then multiply before dividing.
Reference solution in Go
func prorateRefund(annualAmount int, monthsUsed int) int {
m := monthsUsed
if m < 0 {
m = 0
}
if m > 12 {
m = 12
}
return annualAmount * (12 - m) / 12
}