Rounding rules for loan payment schedules

When a loan is created, the schedule of repayments is computed to 13 decimal places of precision, then rounded to the precision specified by the settings described below. Finally, the last payment is adjusted to account for roundoff errors. This page describes the precise manner in which MifOS rounds and adjusts these loan payments.

Rounding configuration options

Three types of application-wide settings affect how a loan repayment schedule is rounded and adjusted: currency precision, rounding precision, and rounding mode. (See "Currency and Rounding Rules" for a general discussion of currency and rounding.)

Currency precision
Specifies the number of digits after the decimal place that are carried by the application's currency. Set by the configuration option AccountingRules.DigitsAfterDecimal
Rounding precision
Specifies the degree of rounding, to the closest decimal place. Example: 1 (closest Rupee), 0.5 (closest half-dollar, for example), 0.1 (closest US dime), 0.01 (closest US penny) 0.001, etc. Precision is limited by the currency being used by the application. For example, US dollars limit the precision to two decimal places (closest penny).

Rounding precision is set by two configuration options:

Initial rounding precision
The total of all repayments, as well as the total of each scheduled repayment but the last, is rounded using this precision. Set by configuration option AccountingRules.InitialRoundOffMultiple. Allowable values are 1, 0.5, 0.1, 0.01, and 0.001.
Final rounding precision
The total of the last scheduled repayment is rounded using this precision. Set by configuration option AccountingRules.FinalRoundOffMultiple. Allowable values are the same as those for initial rounding.
        Rounding mode

Specifies the method of rounding. MifOS supports three rounding modes: HALF_UP, FLOOR, and CEILING. The mode is set by three configuration options, one for each rounding context:

AccountingRules.CurrencyRoundingMode
AccountingRules.InitialRoundingMode
AccountingRules.FinalRoundingMode
 
 
 
 

How to Choose Rounding Settings

(*Section Under Development*)

The Currency Rounding mode is set for all of Mifos; as mentioned above the settings determines the number of decimal places after the decimal point will be displayed throughout the application.  Mifos administrators usually set this to be the actual level of precision of the currency.  The settings MFIs use are very dependent on what makes sense for collecting payments in the country and area in which they are working.

 
The following scenarios walk through how two MFIs chose their rounding settings.
 
Example 1
An Indian MFI wants their interest and other amounts within Mifos to display as precisely as possible.  In Rupees the smallest amount of currency is a paise, which is 1/100 of a rupee.  So this MFI set

AccountingRules.DigitsAfterDecimal= 2
 
For group meetings this MFI doesn't want to collect small coins, only whole Rupees.  Requiring clients to bring paises makes it harder to collect money at meetings and it is simpler to have clients bring money in whole rupees.  Since the loan calculations won't always lead to amounts in whole rupees, they want to round up the initial payments so the client's final payment can be smaller. So this MFI set
 
AccountingRules.InitialRoundingMode=CEILING
       AccountingRules.InitialRoundOffMultiple=1 
 

        For the final payment the MFI also does not want the client to bring small coins.  The
        MFI wants any rounding to benefit the client, so the final amount is rounded down.

       AccountingRules.FinalRoundOffMultiple=1
AccountingRules.FinalRoundingMode=FLOOR
 
Example 2
A Tunisian MFI also wants their interest and other amounts within Mifos to display as precisely as possible.  For Dinar (the Tunisian currency) the smallest amount of currency is a milim, which is 1/1000 of a dinar.  So this MFI set

AccountingRules.DigitsAfterDecimal= 3
 
For group meetings this MFI only wants to collect amounts to the nearest 1/2 dinar.  Requiring clients to bring precise change is not worth it, but the 1/2 dinar is commonly used.  Since the loan calculations won't always lead to amounts to the nearest 1/2 dinar and they want to collect money as close as possible to the exact amount according to the loan schedule, the MFI uses HALF_UP rounding. So this MFI set
 

AccountingRules.InitialRoundingMode=HALF_UP
       AccountingRules.InitialRoundOffMultiple= .5
 
        For the final payment the MFI wants the money collected as precisely as possible. 
 
       AccountingRules.FinalRoundOffMultiple=.001
AccountingRules.FinalRoundingMode=CEILING
 
 
If you would like any help deciding on your MFI's settings please email the functional list and the community can help with suggestions.

Rounding and adjusting the loan repayment schedule

Overview

A loan's repayment schedule is computed, or re-computed, when

  • the loan is first created,
  • a fee or penalty is added or removed, or
  • the loan is redone.

The computation is exact, normally keeping up to 13 decimal places of precision. In most scenarios, the payment amounts need to be rounded off before becoming final. Rounding is done automatically by MifOS before the repayment schedule is displayed or printed.

Note: for release 1.1, the ability to add or remove a charge after one or more payments are applied is disabled unless the amount of the charge is already rounded (and thus MifOS will not re-round the installments). The feature will be enabled once business rules are established for how rounding should be applied in the case that past or future payments have already been applied.

 

MifOS rounds each part (principal, interest, fees, penalties, interest) of an installment separately, and rounds the total payment as well. This often results not only in small overpayment or underpayment of parts of the installment, but also in a difference between the rounded total installment payment and the sum of its parts. MifOS corrects for this by adjusting parts to add up to the whole installment, according to the rules described below.

Finally, after installments are rounded and adjusted, it is possible that neither the total paid across all installments nor the total principal actually paid will add up to the amounts originally computed. MifOS corrects for this by adjusting the amounts in the final installment.

The details of how MifOS carries out this rounding and adjusting is described in the steps below.

Let's illustrate the steps with a sample loan. Assume these application settings:

Currency precision: 3 decimal places
Currency rounding mode: HALF_UP
Initial rounding mode: HALF_UP
Initial rounding precision: 1 (round to whole currency unit)
Final rounding mode: HALF_UP
Final rounding precision: 1 (round to whole currency unit)
Days in fiscal year: 365

The terms of the loan are:

Loan amount: 120
Interest rate: 25%
Number of installments: 6
Payment frequency: weekly
Loan Type: Equal payments, declining interest

In addition, the loan includes a periodic fee of 4% applied to principal + interest, and the first installment includes a miscellaneous fee of 5.

Step 1: Calculate exact payment schedule and totals

MifOS creates the repayment schedule based on accounting rules and the terms of the loan.

Installment Num. Total Principal Interest Loan Fee Misc. Fee
1 30.2178231440342 19.7616116826613 0.5753424657534 4.8808689956195 5.0000000000000
2 25.2178231440342 19.8563591359343 0.4805950124804 4.8808689956195 0.0000000000000
3 25.2178231440342 19.9515608578189 0.3853932905958 4.8808689956195 0.0000000000000
4 25.2178231440342 20.0472190263153 0.2897351220994 4.8808689956195 0.0000000000000
5 25.2178231440342 20.1433358298661 0.1936183185486 4.8808689956195 0.0000000000000
6 25.2178231440342 20.2399134674066 0.0970406810081 4.8808689956195 0.0000000000000
Totals 156.3069388642050 120.0000000000000 2.0217248904856 29.2852139737172 5.0000000000000

Step 2: Round and adjust total payments

MifOS first computes the rounded and adjusted totals for the loan. It

  • rounds the loan's exact total payments (sum of exact principal, exact interest, exact fees and penalties) using final rounding.
  • rounds total fees using currency rounding. Note that the principal, as well as miscellaneous fees and penalties need not be rounded, since they are entered using precision of the prevailing currency.
  • rounds total interest due using currency rounding.
  • adjusts the total interest so that rounded fees, principal, and adjusted interest sum to the rounded total payments.

These are the amounts that the customer will actually pay during the life of the loan.

Because total interest is adjusted, the amount of interest that the borrower pays may differ from the total (currency-rounded) interest due. In order to balance accounts, that difference goes into the 999 account .

Initial-rounded total payments: 156.000
Principal (already rounded): 120.000
Currency-rounded loan fee: 29.285
Currency-rounded misc. fee: 5.000
Currency-rounded interest: 2.022
Adjusted interest: 1.715 (total payments - principal - fees)

The customer will pay 0.307 less interest than actually due, which is accounted for in the 999 account.

Step 3: Round and adjust each installment's payments.

What happens depends on whether or not the installment is the last one, and whether any grace period applies.

3a. Non-grace-period installments except the last:

  • Round the installment's exact total payment using initial rounding. This is what the customer will pay over the life of the loan.
  • Round the installment's exact interest using currency rounding.
  • Round each of the installment's fees using currency rounding.
  • Adjust the installment's principal to make up the difference between the installment's rounded total payment and its rounded interest and fee payments.
  • After rounding and adjusting, the installment's (rounded) total payment is exactly the sum of (rounded) principal, interest and fees.

The first 5 payments are rounded and adjusted as shown below.

Installment Num. Total Principal Interest Loan Fee Misc. Fee
1 30.000 19.544 0.575 4.881 5.000
2 25.000 19.638 0.481 4.881 0.000
3 25.000 19.734 0.385 4.881 0.000
4 25.000 19.829 0.290 4.881 0.000
5 25.000 19.925 0.194 4.881 0.000

3b. The last installment:

Compare the loan totals computed in step 2 with running totals of all but the last installment, and adjust the last installment's parts so that the running totals of all installments sum to loan totals.

The last installment is adjusted as follows:

Total payment = 156 - (25 + 25 + 25 + 25 + 25)
  = 26
Principal = 120 - (19.544 + 19.638 + 19.734 + 19.829 + 19.925)
  = 21.330
Loan Fee = 29.285 - (4.881 + 4.881 + 4.881 + 4.881)
  = 4.880
Interest = 26 - (0.575 + 0.481 + 0.385 + 0.290 + 0.194)
  = -0.210

3c. Principal-only grace-period installments

The principal is always zero, and only interest and fees are paid. As above, the installment's interest amount absorbs any rounding discrepancies:

  • Round the installment's total payments as above.
  • Round the installment's fee payment as above.
  • Adjust the interest to force interest and fee payments to add up to the installment's total payment.

3d. Principal + interest grace-period installments

Calculations are the same as if there were no grace, since the zero-payment installments are not included in the installment list at all.

Negative payments

Under some scenarios, rounding can result in the last installment becoming negative -- see this known issue. At this time, the only resolution available is to adjust the terms of the loan.

 

last modified 2009-01-20 15:37

0
Your rating: None