計算方法と根拠
繰上返済の 2 つの方式
一部繰上返済には、毎月の返済額を変えずに返済期間を縮める「期間短縮型」と、返済期間を変えずに毎月の返済額を減らす「返済額軽減型」があります。一般に、同じ額を繰上返済するなら期間短縮型のほうが利息の軽減額は大きくなります。
繰上返済前の残高の求め方
毎月の返済額は「借入額 × 月利 ÷ (1 − (1 + 月利)の返済回数乗の逆数)」で求め(月利 = 年利 ÷ 12)、返済済みの回数だけ「残高 × (1 + 月利) − 返済額」を繰り返した残りを、繰上返済前の残高とします。
期間短縮型の計算
繰上返済後の残高を、これまでと同じ毎月の返済額で返すと何回で終わるかを、「ln(返済額 ÷ (返済額 − 残高 × 月利)) ÷ ln(1 + 月利)」で求め、切り上げます。最後の 1 回は残りだけを払います。短縮される期間は「残りの回数 − この回数」です。
返済額軽減型の計算
残りの返済回数は変えず、繰上返済後の残高を同じ式で返済する新しい毎月の返済額を求めます。利息軽減額は、繰上しない場合の残りの利息との差です。
利息軽減額の求め方
繰上しない場合の残りの利息は「毎月の返済額 × 残りの回数 − 繰上返済前の残高」です。それぞれの方式で残りの利息を同じ形で求め、差を利息軽減額としています。
使っている式
| 名前 | やっていること | 式 |
|---|---|---|
| 当初の借入額(円) | 入力した借入額(万円)を円に直します。 | loanYen = principal * 10000 |
| 当初の返済回数 | 毎月返済するので、返済期間(年)に 12 を掛けます。 | months = years * 12 |
| 返済済みの回数(計算に使う値) | 返済済みの回数が総回数以上のときは、あと 1 回を残した状態として計算します。 | paidEff = min(paid, months - 1) |
| 残りの返済回数 | 当初の返済回数から返済済みの回数を引きます。 | remain = months - paidEff |
| 月利(小数) | 年利(%)を 100 で割って小数にし、12 で割った 1 か月あたりの利率です。 | r = rate / 1200 |
| 1 + 月利 | 1 か月たつごとに残高が何倍になるかを表します。 | g = 1 + r |
| 毎月の返済額(繰上前) | 借入額 × 月利 ÷ (1 − (1 + 月利)の返済回数乗の逆数)で求め、円未満を四捨五入します。月利が 0 のときは借入額 ÷ 返済回数です。 | payment = round(if(r == 0, loanYen / months, loanYen * r / (1 - pow(g, -months))), 0) |
| 繰上返済前の残高 | 返済済みの回数だけ「残高 × (1 + 月利) − 返済額」を繰り返した後の元金の残りです。 | balance = max(0, if(r == 0, loanYen - payment * paidEff, loanYen * pow(g, paidEff) - payment * (pow(g, paidEff) - 1) / r)) |
| 繰上返済額(円) | 繰上返済する額を円に直します。残高を超えるときは残高までとします。 | prepayYen = min(prepay * 10000, balance) |
| 繰上返済後の残高 | 繰上返済前の残高から繰上返済額を引いた元金の残りです。 | balance2 = balance - prepayYen |
| 繰上しない場合の残りの利息 | このまま最後まで払ったときの返済額の合計(毎月の返済額 × 残りの回数)から、現在の残高を引いた額です。 | interestBefore = max(0, payment * remain - balance) |
| 期間短縮型の計算用の比 | 期間短縮型で完済までの回数を求めるための比です。返済額 ÷ (返済額 − 繰上後の残高 × 月利)。 | ratioA = payment / (payment - balance2 * r) |
| 比の 1024 乗根 | 対数を使わずに回数を求めるため、平方根を 10 回とって 1 に近い数にします。 | rootA = sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(ratioA)))))))))) |
| 1 + 月利 の 1024 乗根 | 同じく、1 + 月利 の平方根を 10 回とります。 | rootG = sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(sqrt(g)))))))))) |
| 級数の変数(比) | 1 に近い数の対数を級数で求めるための変数 (x−1)÷(x+1) です。 | zA = (rootA - 1) / (rootA + 1) |
| 級数の変数(1 + 月利) | 同じく 1 + 月利 についての変数です。 | zG = (rootG - 1) / (rootG + 1) |
| 期間短縮型の完済までの回数(端数あり) | 完済までの回数 = ln(比) ÷ ln(1 + 月利)。対数は級数 2×(z + z³/3 + z⁵/5) で近似しており、割り算で係数が打ち消されます。 | monthsExact = if(balance2 <= 0, 0, if(r == 0, balance2 / payment, (zA + pow(zA, 3) / 3 + pow(zA, 5) / 5) / (zG + pow(zG, 3) / 3 + pow(zG, 5) / 5))) |
| 期間短縮型の完済までの回数 | 端数を切り上げた回数です。最後の 1 回は少ない額になります。 | monthsShort = ceil(round(monthsExact, 6)) |
| 期間短縮型の最終回の前の残高 | 完済の 1 回前までに払ったあとの元金の残りです。 | lastBal = if(monthsShort == 0, 0, if(r == 0, balance2 - payment * (monthsShort - 1), balance2 * pow(g, monthsShort - 1) - payment * (pow(g, monthsShort - 1) - 1) / r)) |
| 期間短縮型の残りの返済額の合計 | 最終回の前までは毎月の返済額、最終回は「残り × (1 + 月利)」です。 | totalShort = if(monthsShort == 0, 0, payment * (monthsShort - 1) + lastBal * g) |
| 期間短縮型の残りの利息 | 返済額の合計から繰上後の残高を引いた額です。 | interestShort = max(0, totalShort - balance2) |
| 返済額軽減型の新しい毎月の返済額 | 残りの回数は変えず、繰上後の残高を同じ回数で返す毎月の額を求めて円未満を四捨五入します。 | payment2 = if(balance2 <= 0, 0, round(if(r == 0, balance2 / remain, balance2 * r / (1 - pow(g, -remain))), 0)) |
| 返済額軽減型の残りの利息 | 新しい毎月の返済額 × 残りの回数 − 繰上後の残高です。 | interestLight = max(0, payment2 * remain - balance2) |
| 期間短縮型の利息軽減額(結果) | 毎月の返済額を変えず、返済期間を縮める方法で減る利息の額です。 | max(0, interestBefore - interestShort) |
| 期間短縮型で短くなる期間(結果) | 残りの返済回数が何か月短くなるかです。12 で割ると年数の目安になります。 | remain - monthsShort |
| 返済額軽減型の利息軽減額(結果) | 返済期間を変えず、毎月の返済額を減らす方法で減る利息の額です。 | max(0, interestBefore - interestLight) |
| 返済額軽減型の新しい毎月の返済額(結果) | 繰上返済後の毎月の返済額です。 | payment2 |
| 返済額軽減型で減る毎月の返済額(結果) | 繰上返済前の毎月の返済額との差です。 | payment - payment2 |
| 繰上返済前の残高(結果) | 繰上返済をする時点での元金の残りです。 | balance |
| 繰上返済後の残高(結果) | 繰上返済のあとの元金の残りです。 | balance2 |
| 繰上返済前の毎月の返済額(結果) | 当初の条件での毎月の返済額です。 | payment |
式の記法: + - * / ^(べき乗)、かっこ、min / max / round / ceil / floor / pow / abs / sqrt、if(条件, 真のとき, 偽のとき)。round(x, 桁) は四捨五入、ceil は切り上げ、floor は切り捨てです。
設定値(定数)と出典
この計算では、税率や料金表などの外部の設定値は使っていません。数学的な定義の式だけで計算しています。
入力できる範囲
| 項目 | 範囲 | 初期値 |
|---|---|---|
| 当初の借入額 | 100〜100,000万円 | 3,000万円 |
| 年利(固定金利) | 0〜20% | 1.5% |
| 当初の返済期間 | 1〜50年 | 35年 |
| すでに返済した回数 | 0〜599回 | 60回 |
| 繰上返済する額 | 1〜100,000万円 | 300万円 |
結果は、同じ条件なら本サイトのどのページでも同じ数字になります(ページの数字も、計算ツールも同じ計算の仕組みで出しています)。
ご利用にあたって
- 計算結果は入力した条件にもとづく概算で、金融機関の見積りや返済予定表ではありません。実際の金額は金融機関の端数処理や返済日の違いで数円から数千円ほど異なることがあります。
- 繰上返済の手数料、保証料の戻り、住宅ローン控除への影響、団体信用生命保険の取扱い、繰上返済の最低額や受付時期の制限は含みません。実際の取扱いは契約先の金融機関で確認してください。
- 金利が途中で変わる変動金利、ボーナス併用返済、一部の期間だけ金利が変わる固定期間選択型には対応していません。
- 本サイトは特定の金融商品の勧誘や、借入・返済計画のアドバイスを行うものではありません。