Asset Loan Calculator, payment math for the loans a car loan calculator gets wrong

Asset Loan Calculator works out the monthly payment, the total interest and the full amortization schedule for RVs, land, tractors, manufactured homes and other assets a car loan calculator gets wrong. I designed, built and run it alone from Warsaw, Poland, and every number on it is computed in the browser from the visitor’s own inputs.

From seven inputs to the amortization schedule, on every keystrokeHow the Asset Loan Calculator turns inputs into a schedule, drawn with the worked example from the live RV page. One, the inputs, a price of 85,000 dollars, 12,750 down, no trade-in, no sales tax, a rate of 9.80 percent, a term of 180 months and 100 dollars extra a month. Two, every value is clamped to zero or more, an empty box becomes zero and the term is at least one month, which leaves 72,250 dollars financed. Three, the rate guard. A blank rate stays blank and the page shows Add rate instead of a zero dollar payment. Four, the payment from the annuity formula, 767.59 dollars a month. Five, the loan is walked month by month with the payment plus the extra, stopping when the balance is under half a cent, with a cap of the term plus 1,200 months. Six, the schedule, 141 rows, drawn as one bar per payment with the interest part at the bottom and the principal part on top. Interest is most of the first payment and almost none of the last. The loan ends 39 months before the 180 month term and saves 16,592 dollars of interest.From seven inputs to the schedule, on every keystrokeRV, $85,000, 9.80%, 180 months[1] Inputstyped by you[2] Clampno negatives[3] Rate guardblank is blank[4] Paymentannuity formula[5] Walkmonth by monthprice85,000down12,750trade0tax0%rate9.80%term180extra100financed$72,250rate9.80%payment$767.59rows141max(0, x)empty -> 0term >= 1rate blank?yes, stopno, go onP x i1 - (1+i)^-ni = rate / 12pay + extrastop < $0.005cap n + 1,200blank shows Add rate, never a $0 payment[6] Schedule, one bar per paymentpayment 1 is $590 interest, the last is almost noneprincipalinterest39 months early$16,592 savedvs 180 monthsmonth 160120141180From seven inputs to the amortization schedule, on every keystrokeHow the Asset Loan Calculator turns inputs into a schedule, drawn with the worked example from the live RV page. One, the inputs, a price of 85,000 dollars, 12,750 down, no trade-in, no sales tax, a rate of 9.80 percent, a term of 180 months and 100 dollars extra a month. Two, every value is clamped to zero or more, an empty box becomes zero and the term is at least one month, which leaves 72,250 dollars financed. Three, the rate guard. A blank rate stays blank and the page shows Add rate instead of a zero dollar payment. Four, the payment from the annuity formula, 767.59 dollars a month. Five, the loan is walked month by month with the payment plus the extra, stopping when the balance is under half a cent, with a cap of the term plus 1,200 months. Six, the schedule, 141 rows, drawn as one bar per payment with the interest part at the bottom and the principal part on top. Interest is most of the first payment and almost none of the last. The loan ends 39 months before the 180 month term and saves 16,592 dollars of interest.Seven inputs to the schedule[1] Inputsprice, down, rate, term, extra$85,000[2] Clampno negatives, empty is 0$72,250[3] Rate guardblank shows Add rate9.80%[4] PaymentP x i / (1 - (1+i)^-n)$767.59[5] Walkuntil under half a cent141[6] Schedule, 141 rowsprincipalinterest114118039 months early, $16,592 saved
Every keystroke runs the same path in the browser. A blank rate stops it with Add rate instead of a $0 payment. The bars are the real schedule for an $85,000 RV at 9.80% with $100 extra a month, 141 payments instead of 180.
30Calculator pages live
889Engine test checks passing
61Commits since June 2026
0Libraries in the calculator script
The RV calculator with a real quote entered, $767.59 a month over 180 months.
The RV calculator with a real quote entered, $767.59 a month over 180 months.
On a phone with no rate yet, the bar says Add rate instead of showing a fake payment.
On a phone with the rate in, the bar and the card show the same payment.
On a phone. With no rate yet the bar says Add rate, never a fake payment. With the rate in, the result follows every keystroke.
Four states of the result card, and the phone bar that repeats itThe result card on every Asset Loan Calculator page has four states, drawn for the RV page. One, first view. No rate is ever prefilled, so the card shows a dash and asks for the contract rate, and the phone bar says Add rate. Two, after you type 9.80 percent the card shows 767.59 dollars a month and says the interest is 65,915 dollars, 91 percent on top of what you finance, and that 100 dollars more a month would finish 39 months early. Three, after you add 100 dollars extra, the card says the loan is paid off in 141 months and saves 16,592 dollars of interest. Four, a guard state. If the price is cleared so nothing is financed, the card asks for a price instead of showing a zero payment. Under each card is the bar pinned to the bottom of a phone screen, which repeats the payment because the keyboard covers the card while you type. No state shows a made up zero dollar payment.Four states of the result cardthe rate is never prefilled[1] First viewpage load, no ratemonthly payment$ -Enter the contractinterest rate yourlender quoted.RV paymentAdd rate[2] Rate inyou type 9.80monthly payment$767.59$65,915 interest,91% on top. Add$100/mo, 39 mo early.RV payment$767.59[3] Extra inyou add $100monthly payment$767.59Paid off in 141months, saves$16,592 interest.RV payment$767.59[4] Guardprice clearedmonthly payment$ -Enter a priceabove to see yourpayment.RV paymentAdd rateThe bar stays pinned to the phone screen while you typeno state shows a $0 payment Four states of the result card, and the phone bar that repeats itThe result card on every Asset Loan Calculator page has four states, drawn for the RV page. One, first view. No rate is ever prefilled, so the card shows a dash and asks for the contract rate, and the phone bar says Add rate. Two, after you type 9.80 percent the card shows 767.59 dollars a month and says the interest is 65,915 dollars, 91 percent on top of what you finance, and that 100 dollars more a month would finish 39 months early. Three, after you add 100 dollars extra, the card says the loan is paid off in 141 months and saves 16,592 dollars of interest. Four, a guard state. If the price is cleared so nothing is financed, the card asks for a price instead of showing a zero payment. Under each card is the bar pinned to the bottom of a phone screen, which repeats the payment because the keyboard covers the card while you type. No state shows a made up zero dollar payment.Four states of the result cardmonthly payment$ -phone barAdd rate[1] First viewpage load, no rateasks for the ratemonthly payment$767.59phone bar$767.59[2] Rate inyou type 9.80$65,915 interestmonthly payment$767.59phone bar$767.59[3] Extra inyou add $100paid off in 141 momonthly payment$ -phone barAdd rate[4] Guardprice clearedasks for a priceno state shows a $0 payment
The amortization schedule with $100 extra a month, paid off in 141 months.
The amortization schedule with $100 extra a month, paid off in 141 months.
From one repository to a buyer’s phone, through a gateThe architecture of Asset Loan Calculator in five stages. One, the source, one repository with a config of 17 asset types, 16 calculation engines and one shared page template. Two, the build, astro build writes static HTML and fetches the U.S. Prime Rate from FRED, where two series must agree or the line is left out. Three, the gate, a type check, 11 engine test suites, a power of ten code check and a check of the built HTML. Any failure exits with code 1 and the deploy never runs. Four, the edge, Cloudflare Pages serves the static pages, 30 calculator pages in the sitemap. Five, the browser, where an inline script with no libraries does all the payment math, and analytics load only after consent. The HTML gate checks that every calculator is linked from the homepage, that the Prime line is present and dated, that the sitemap matches the pages, that no page makes a banned claim, that thin pages are noindex and that crosslinks render.From one repository to a buyer’s phonestatic pages, no server code[1] Sourceone repository[2] Buildastro build[3] Gateexit 1 stops it[4] EdgeCloudflare Pages[5] Browserthe math runs here17asset configs16 enginesin src/lib2FRED seriesmust agree,else the lineis left out11test suitestype checkpower of tenHTML gate30calculator pagesstatic fileswrangler deploy0librariesconsent firstanalyticsFREDDPRIME, DFEDTARUcontext only, neverin the payment mathThe HTML gate reads the built pagescalculators linkedPrime line datedsitemap matchesno banned claimsnoindex if thincrosslinks rendera miss exits 1, wrangler never runs From one repository to a buyer’s phone, through a gateThe architecture of Asset Loan Calculator in five stages. One, the source, one repository with a config of 17 asset types, 16 calculation engines and one shared page template. Two, the build, astro build writes static HTML and fetches the U.S. Prime Rate from FRED, where two series must agree or the line is left out. Three, the gate, a type check, 11 engine test suites, a power of ten code check and a check of the built HTML. Any failure exits with code 1 and the deploy never runs. Four, the edge, Cloudflare Pages serves the static pages, 30 calculator pages in the sitemap. Five, the browser, where an inline script with no libraries does all the payment math, and analytics load only after consent. The HTML gate checks that every calculator is linked from the homepage, that the Prime line is present and dated, that the sitemap matches the pages, that no page makes a banned claim, that thin pages are noindex and that crosslinks render.Repository to a buyer’s phone[1] Source17 asset configs, 16 engines[2] Buildstatic HTML, Prime from FRED[3] Gateexit 1 and the deploy stops[4] EdgeCloudflare Pages, 30 pages[5] Browserthe math runs here, 0 librariesThe HTML gate reads the built pagesevery calculator linkedPrime present and datedsitemap matches the pagesno banned claimsthin pages noindexcrosslinks render
The homepage, with the dated Prime benchmark.
The homepage, with the dated Prime benchmark.
Year
2026
Sector
Consumer finance tools
Client or project
Own product, Zovo
Duration
June 2026 to now, 61 commits
Stack
Astro 4, TypeScript, plain JavaScript, Cloudflare Pages, FRED data at build time
Role
Product, design, engineering, content, release
Updated

Why one more loan calculator

A generic auto loan calculator assumes car terms. An RV can be financed for 15 or 20 years, land usually needs 20 percent down or more, and a motorcycle loan usually runs 3 to 6 years. Put those into a car tool and the defaults are wrong before the visitor types anything.

So I built one page per asset on a shared template. Each page starts with that asset’s typical price, down payment and longest term, and the term list stops where lenders stop. The RV page offers terms up to 240 months, the motorcycle page up to 84.

The site never sets the rate. The visitor enters the rate their lender quoted, and the page says so above the field.

From the inputs to the schedule

Every keystroke runs the same short path. Each number is clamped to zero or more, so a stray minus sign or an empty box can’t produce a negative loan. The amount financed is the price, less the down payment and trade-in, plus sales tax.

A blank rate stays blank. Before October an empty rate box fell through as zero and the tool showed a confident interest free payment no lender would honor. Now the card shows a dash and the phone bar says Add rate until a real rate is in.

The payment uses the standard annuity formula, with a separate path for a zero rate. Then the code walks the loan month by month with the payment plus any extra, stops when the balance is under half a cent and gives up after the term plus 1,200 months, so a bad input can’t hang the tab.

For an $85,000 RV with 15 percent down at 9.80 percent over 180 months, the page shows $767.59 a month and $65,915 in interest. A second walk at $100 more a month tells the visitor they would finish 39 months early and save $16,592. I checked both figures with a separate script.

Only real numbers

The one outside number on the site is the U.S. Prime Rate, shown as context next to the rate field. At build time the site fetches it from the Federal Reserve data service and checks it against the federal funds target plus 3.00. If the two disagree or a fetch fails, the line is left out. It is never used in the payment math.

The RV page names the three lenders it quotes and the day they were checked, 26 October 2026. The calculator itself never quotes a rate.

A gate before every deploy

The deploy command can’t reach Cloudflare until a chain passes. A type check, the engine test suites, a NASA power of ten style code check, the build and then a gate that reads the built HTML.

That last gate checks that every calculator is linked from the homepage, that the Prime line is present and dated, that the sitemap matches the pages and that no page makes a claim the site policy bans. Each check exists because the thing it catches went wrong once.

The 13 engine suites hold 889 hand worked checks, and all of them passed when I ran them on 5 November 2026. The deploy gate runs 11 of them on every deploy.

Built for a buyer on a phone

On a phone the keyboard covers the result while you type, so a bar pinned to the bottom of the screen repeats the payment as it changes. Tapping it scrolls to the full result.

There is no login, no email box and no sign up. Copy my result puts a one line summary on the clipboard for a partner or a dealer. Analytics wait for consent and stay off when the browser sends Do Not Track or Global Privacy Control.

Figures checked on 5 November 2026 against the live site and the source. The site gives estimates for planning, and it is not a lender or a broker.

[+]More case studies

More case studies

All case studies

Next step

Send me your project, or the part your team can’t get to.

Send me your project

My last client result, a reports page cut from 3,800 requests per load to 3. The brief and the repo are enough to start.

How it starts

  1. [1]Send your project
  2. [2]Get a free plan
  3. [3]Approve the first milestone