Skip to content

timmson/loan-schedule.js

Repository files navigation

Library for loan amortization schedule manipulation

codecov codacy version license

..::Live demo::..

Install

npm i loan-schedule.js

Init

const LoanSchedule = require("loan-schedule.js");

const loanSchedule = new LoanSchedule({});

Init with options

const LoanSchedule = require("loan-schedule.js");

const loanSchedule = new LoanSchedule({
    DecimalDigit : 2,
    dateFormat: "DD.MM.YYYY",
    prodCalendar: "ru"
});

Interest by period

let interest = loanSchedule.calculateInterestByPeriod({
                   from: "10.12.2015", 
                   to: "10.01.2016", 
                   amount: 1000, 
                   rate: 16.7
});
console.log(interest);

Payment

let payment = loanSchedule.calculateAnnuityPaymentAmount({
                  amount: 110000, 
                  term: 60, 
                  rate: 12.9
});
console.log(payment);

Max Loan Amount

let loanAmount = loanSchedule.calculateMaxLoanAmount({
                  paymentAmount: 2497.21,
                  term: 60,
                  rate: 12.9
});
console.log(loanAmount);

Annuity loan schedule (payment amount will be calculated)

loanSchedule.calculateSchedule({
                   amount: 50000,
                   rate: 11.5,
                   term: 12,
                   paymentOnDay: 25,
                   issueDate: "25.10.2016",
                   scheduleType : LoanSchedule.ANNUITY_SCHEDULE
}).payments.forEach((pay) => {
    console.log(pay.paymentDate + "\t|\t\t"
     + pay.initialBalance + "\t|\t\t"
     + pay.paymentAmount + "\t|\t\t"
     + pay.principalAmount + "\t|\t\t"
     + pay.interestAmount + "\t|\t\t"
     + pay.finalBalance
     );
});

Annuity loan schedule (payment amount is set)

loanSchedule.calculateSchedule({
                   amount: 50000,
                   rate: 11.5,
                   term: 12,
                   paymentAmount: 40000,
                   paymentOnDay: 25,
                   issueDate: "25.10.2016",
                   scheduleType : LoanSchedule.ANNUITY_SCHEDULE
}).payments.forEach((pay) => {
    console.log(pay.paymentDate + "\t|\t\t"
     + pay.initialBalance + "\t|\t\t"
     + pay.paymentAmount + "\t|\t\t"
     + pay.principalAmount + "\t|\t\t"
     + pay.interestAmount + "\t|\t\t"
     + pay.finalBalance
     );
});

Differentiated loan schedule

loanSchedule.calculateSchedule({
                   amount: 50000,
                   rate: 11.5,
                   term: 12,
                   paymentOnDay: 25,
                   issueDate: "25.10.2016",
                   scheduleType : LoanSchedule.DIFFERENTIATED_SCHEDULE
}).payments.forEach((pay) => {
    console.log(pay.paymentDate + "\t|\t\t"
     + pay.initialBalance + "\t|\t\t"
     + pay.paymentAmount + "\t|\t\t"
     + pay.principalAmount + "\t|\t\t"
     + pay.interestAmount + "\t|\t\t"
     + pay.finalBalance
     );
});

Bubble loan schedule

loanSchedule.calculateSchedule({
                   amount: 50000,
                   rate: 11.5,
                   term: 12,
                   paymentOnDay: 25,
                   issueDate: "25.10.2016",
                   scheduleType : LoanSchedule.BUUBLE_SCHEDULE
}).payments.forEach((pay) => {
    console.log(pay.paymentDate + "\t|\t\t"
     + pay.initialBalance + "\t|\t\t"
     + pay.paymentAmount + "\t|\t\t"
     + pay.principalAmount + "\t|\t\t"
     + pay.interestAmount + "\t|\t\t"
     + pay.finalBalance
     );
});