Problems › TypeScript › finance
Months to clear the loan
A loan charges whole-percent interest each month and takes a fixed monthly payment. Simulate month by month to see how long, if ever, it takes to clear.
- Each month: balance gains floor(balance × rate ÷ 100), then the payment is subtracted.
- Count a month whenever the balance is still positive at the top of the loop.
- A loan that is still not cleared after 1200 months is hopeless: return -1.
- All arithmetic is whole-unit and deterministic.
loanPayoff(loanMinor: int, monthlyPayment: int, monthlyRatePercent: int) → int
Where you start
function loanPayoff(loanMinor: number, monthlyPayment: number, monthlyRatePercent: number): number {
}
Worked examples
| Call | Result |
|---|---|
loanPayoff(100, 30, 0) | 4 |
loanPayoff(100, 100, 0) | 1 |
loanPayoff(50, 10, 0) | 5 |
loanPayoff(100, 50, 10) | 3 |
Hint
Walk the loop with a guard count; if you run out of iterations, the debt never dies.
Reference solution in TypeScript
function loanPayoff(loanMinor: number, monthlyPayment: number, monthlyRatePercent: number): number {
let balance = loanMinor;
let months = 0;
while (balance > 0 && months < 1200) {
balance += Math.floor((balance * monthlyRatePercent) / 100);
balance -= monthlyPayment;
months++;
}
return balance > 0 ? -1 : months;
}