[ { "name": "\u00a31,000 at 12% over 12 months, half-up", "args": [ { "minor": 100000, "currency": "GBP" }, 1200, 12, 12, "half-up" ], "expect": { "payment": { "minor": 8885, "currency": "GBP" }, "rows": [ { "period": 1, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 1000, "currency": "GBP" }, "principal": { "minor": 7885, "currency": "GBP" }, "balance": { "minor": 92115, "currency": "GBP" } }, { "period": 2, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 921, "currency": "GBP" }, "principal": { "minor": 7964, "currency": "GBP" }, "balance": { "minor": 84151, "currency": "GBP" } }, { "period": 3, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 842, "currency": "GBP" }, "principal": { "minor": 8043, "currency": "GBP" }, "balance": { "minor": 76108, "currency": "GBP" } }, { "period": 4, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 761, "currency": "GBP" }, "principal": { "minor": 8124, "currency": "GBP" }, "balance": { "minor": 67984, "currency": "GBP" } }, { "period": 5, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 680, "currency": "GBP" }, "principal": { "minor": 8205, "currency": "GBP" }, "balance": { "minor": 59779, "currency": "GBP" } }, { "period": 6, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 598, "currency": "GBP" }, "principal": { "minor": 8287, "currency": "GBP" }, "balance": { "minor": 51492, "currency": "GBP" } }, { "period": 7, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 515, "currency": "GBP" }, "principal": { "minor": 8370, "currency": "GBP" }, "balance": { "minor": 43122, "currency": "GBP" } }, { "period": 8, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 431, "currency": "GBP" }, "principal": { "minor": 8454, "currency": "GBP" }, "balance": { "minor": 34668, "currency": "GBP" } }, { "period": 9, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 347, "currency": "GBP" }, "principal": { "minor": 8538, "currency": "GBP" }, "balance": { "minor": 26130, "currency": "GBP" } }, { "period": 10, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 261, "currency": "GBP" }, "principal": { "minor": 8624, "currency": "GBP" }, "balance": { "minor": 17506, "currency": "GBP" } }, { "period": 11, "payment": { "minor": 8885, "currency": "GBP" }, "interest": { "minor": 175, "currency": "GBP" }, "principal": { "minor": 8710, "currency": "GBP" }, "balance": { "minor": 8796, "currency": "GBP" } }, { "period": 12, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 88, "currency": "GBP" }, "principal": { "minor": 8796, "currency": "GBP" }, "balance": { "minor": 0, "currency": "GBP" } } ], "totalInterest": { "minor": 6619, "currency": "GBP" }, "totalPaid": { "minor": 106619, "currency": "GBP" } } }, { "name": "rounded up, the final payment is smaller", "args": [ { "minor": 200000, "currency": "GBP" }, 999, 12, 12, "up" ], "expect": { "payment": { "minor": 17583, "currency": "GBP" }, "rows": [ { "period": 1, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 1665, "currency": "GBP" }, "principal": { "minor": 15918, "currency": "GBP" }, "balance": { "minor": 184082, "currency": "GBP" } }, { "period": 2, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 1532, "currency": "GBP" }, "principal": { "minor": 16051, "currency": "GBP" }, "balance": { "minor": 168031, "currency": "GBP" } }, { "period": 3, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 1399, "currency": "GBP" }, "principal": { "minor": 16184, "currency": "GBP" }, "balance": { "minor": 151847, "currency": "GBP" } }, { "period": 4, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 1264, "currency": "GBP" }, "principal": { "minor": 16319, "currency": "GBP" }, "balance": { "minor": 135528, "currency": "GBP" } }, { "period": 5, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 1128, "currency": "GBP" }, "principal": { "minor": 16455, "currency": "GBP" }, "balance": { "minor": 119073, "currency": "GBP" } }, { "period": 6, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 991, "currency": "GBP" }, "principal": { "minor": 16592, "currency": "GBP" }, "balance": { "minor": 102481, "currency": "GBP" } }, { "period": 7, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 853, "currency": "GBP" }, "principal": { "minor": 16730, "currency": "GBP" }, "balance": { "minor": 85751, "currency": "GBP" } }, { "period": 8, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 714, "currency": "GBP" }, "principal": { "minor": 16869, "currency": "GBP" }, "balance": { "minor": 68882, "currency": "GBP" } }, { "period": 9, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 573, "currency": "GBP" }, "principal": { "minor": 17010, "currency": "GBP" }, "balance": { "minor": 51872, "currency": "GBP" } }, { "period": 10, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 432, "currency": "GBP" }, "principal": { "minor": 17151, "currency": "GBP" }, "balance": { "minor": 34721, "currency": "GBP" } }, { "period": 11, "payment": { "minor": 17583, "currency": "GBP" }, "interest": { "minor": 289, "currency": "GBP" }, "principal": { "minor": 17294, "currency": "GBP" }, "balance": { "minor": 17427, "currency": "GBP" } }, { "period": 12, "payment": { "minor": 17572, "currency": "GBP" }, "interest": { "minor": 145, "currency": "GBP" }, "principal": { "minor": 17427, "currency": "GBP" }, "balance": { "minor": 0, "currency": "GBP" } } ], "totalInterest": { "minor": 10985, "currency": "GBP" }, "totalPaid": { "minor": 210985, "currency": "GBP" } } }, { "name": "rounded down, the final payment is larger", "args": [ { "minor": 100000, "currency": "GBP" }, 1200, 12, 12, "down" ], "expect": { "payment": { "minor": 8884, "currency": "GBP" }, "rows": [ { "period": 1, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 1000, "currency": "GBP" }, "principal": { "minor": 7884, "currency": "GBP" }, "balance": { "minor": 92116, "currency": "GBP" } }, { "period": 2, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 921, "currency": "GBP" }, "principal": { "minor": 7963, "currency": "GBP" }, "balance": { "minor": 84153, "currency": "GBP" } }, { "period": 3, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 842, "currency": "GBP" }, "principal": { "minor": 8042, "currency": "GBP" }, "balance": { "minor": 76111, "currency": "GBP" } }, { "period": 4, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 761, "currency": "GBP" }, "principal": { "minor": 8123, "currency": "GBP" }, "balance": { "minor": 67988, "currency": "GBP" } }, { "period": 5, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 680, "currency": "GBP" }, "principal": { "minor": 8204, "currency": "GBP" }, "balance": { "minor": 59784, "currency": "GBP" } }, { "period": 6, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 598, "currency": "GBP" }, "principal": { "minor": 8286, "currency": "GBP" }, "balance": { "minor": 51498, "currency": "GBP" } }, { "period": 7, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 515, "currency": "GBP" }, "principal": { "minor": 8369, "currency": "GBP" }, "balance": { "minor": 43129, "currency": "GBP" } }, { "period": 8, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 431, "currency": "GBP" }, "principal": { "minor": 8453, "currency": "GBP" }, "balance": { "minor": 34676, "currency": "GBP" } }, { "period": 9, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 347, "currency": "GBP" }, "principal": { "minor": 8537, "currency": "GBP" }, "balance": { "minor": 26139, "currency": "GBP" } }, { "period": 10, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 261, "currency": "GBP" }, "principal": { "minor": 8623, "currency": "GBP" }, "balance": { "minor": 17516, "currency": "GBP" } }, { "period": 11, "payment": { "minor": 8884, "currency": "GBP" }, "interest": { "minor": 175, "currency": "GBP" }, "principal": { "minor": 8709, "currency": "GBP" }, "balance": { "minor": 8807, "currency": "GBP" } }, { "period": 12, "payment": { "minor": 8895, "currency": "GBP" }, "interest": { "minor": 88, "currency": "GBP" }, "principal": { "minor": 8807, "currency": "GBP" }, "balance": { "minor": 0, "currency": "GBP" } } ], "totalInterest": { "minor": 6619, "currency": "GBP" }, "totalPaid": { "minor": 106619, "currency": "GBP" } } }, { "name": "\u00a35,000 at 6% over 6 months", "args": [ { "minor": 500000, "currency": "GBP" }, 600, 6, 12, "half-up" ], "expect": { "payment": { "minor": 84798, "currency": "GBP" }, "rows": [ { "period": 1, "payment": { "minor": 84798, "currency": "GBP" }, "interest": { "minor": 2500, "currency": "GBP" }, "principal": { "minor": 82298, "currency": "GBP" }, "balance": { "minor": 417702, "currency": "GBP" } }, { "period": 2, "payment": { "minor": 84798, "currency": "GBP" }, "interest": { "minor": 2089, "currency": "GBP" }, "principal": { "minor": 82709, "currency": "GBP" }, "balance": { "minor": 334993, "currency": "GBP" } }, { "period": 3, "payment": { "minor": 84798, "currency": "GBP" }, "interest": { "minor": 1675, "currency": "GBP" }, "principal": { "minor": 83123, "currency": "GBP" }, "balance": { "minor": 251870, "currency": "GBP" } }, { "period": 4, "payment": { "minor": 84798, "currency": "GBP" }, "interest": { "minor": 1259, "currency": "GBP" }, "principal": { "minor": 83539, "currency": "GBP" }, "balance": { "minor": 168331, "currency": "GBP" } }, { "period": 5, "payment": { "minor": 84798, "currency": "GBP" }, "interest": { "minor": 842, "currency": "GBP" }, "principal": { "minor": 83956, "currency": "GBP" }, "balance": { "minor": 84375, "currency": "GBP" } }, { "period": 6, "payment": { "minor": 84797, "currency": "GBP" }, "interest": { "minor": 422, "currency": "GBP" }, "principal": { "minor": 84375, "currency": "GBP" }, "balance": { "minor": 0, "currency": "GBP" } } ], "totalInterest": { "minor": 8787, "currency": "GBP" }, "totalPaid": { "minor": 508787, "currency": "GBP" } } }, { "name": "interest-free: the pennies left over go on the last payment", "args": [ { "minor": 100000, "currency": "GBP" }, 0, 12, 12, "down" ], "expect": { "payment": { "minor": 8333, "currency": "GBP" }, "rows": [ { "period": 1, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 91667, "currency": "GBP" } }, { "period": 2, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 83334, "currency": "GBP" } }, { "period": 3, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 75001, "currency": "GBP" } }, { "period": 4, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 66668, "currency": "GBP" } }, { "period": 5, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 58335, "currency": "GBP" } }, { "period": 6, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 50002, "currency": "GBP" } }, { "period": 7, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 41669, "currency": "GBP" } }, { "period": 8, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 33336, "currency": "GBP" } }, { "period": 9, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 25003, "currency": "GBP" } }, { "period": 10, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 16670, "currency": "GBP" } }, { "period": 11, "payment": { "minor": 8333, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8333, "currency": "GBP" }, "balance": { "minor": 8337, "currency": "GBP" } }, { "period": 12, "payment": { "minor": 8337, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 8337, "currency": "GBP" }, "balance": { "minor": 0, "currency": "GBP" } } ], "totalInterest": { "minor": 0, "currency": "GBP" }, "totalPaid": { "minor": 100000, "currency": "GBP" } } }, { "name": "rounded up, a tiny interest-free loan clears three payments early", "args": [ { "minor": 25, "currency": "GBP" }, 0, 12, 12, "up" ], "expect": { "payment": { "minor": 3, "currency": "GBP" }, "rows": [ { "period": 1, "payment": { "minor": 3, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 3, "currency": "GBP" }, "balance": { "minor": 22, "currency": "GBP" } }, { "period": 2, "payment": { "minor": 3, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 3, "currency": "GBP" }, "balance": { "minor": 19, "currency": "GBP" } }, { "period": 3, "payment": { "minor": 3, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 3, "currency": "GBP" }, "balance": { "minor": 16, "currency": "GBP" } }, { "period": 4, "payment": { "minor": 3, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 3, "currency": "GBP" }, "balance": { "minor": 13, "currency": "GBP" } }, { "period": 5, "payment": { "minor": 3, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 3, "currency": "GBP" }, "balance": { "minor": 10, "currency": "GBP" } }, { "period": 6, "payment": { "minor": 3, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 3, "currency": "GBP" }, "balance": { "minor": 7, "currency": "GBP" } }, { "period": 7, "payment": { "minor": 3, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 3, "currency": "GBP" }, "balance": { "minor": 4, "currency": "GBP" } }, { "period": 8, "payment": { "minor": 3, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 3, "currency": "GBP" }, "balance": { "minor": 1, "currency": "GBP" } }, { "period": 9, "payment": { "minor": 1, "currency": "GBP" }, "interest": { "minor": 0, "currency": "GBP" }, "principal": { "minor": 1, "currency": "GBP" }, "balance": { "minor": 0, "currency": "GBP" } } ], "totalInterest": { "minor": 0, "currency": "GBP" }, "totalPaid": { "minor": 25, "currency": "GBP" } } }, { "name": "a single annual payment", "args": [ { "minor": 100000, "currency": "GBP" }, 1000, 12, 1, "half-up" ], "expect": { "payment": { "minor": 110000, "currency": "GBP" }, "rows": [ { "period": 1, "payment": { "minor": 110000, "currency": "GBP" }, "interest": { "minor": 10000, "currency": "GBP" }, "principal": { "minor": 100000, "currency": "GBP" }, "balance": { "minor": 0, "currency": "GBP" } } ], "totalInterest": { "minor": 10000, "currency": "GBP" }, "totalPaid": { "minor": 110000, "currency": "GBP" } } }, { "name": "quarterly over two years at 8%", "args": [ { "minor": 1000000, "currency": "GBP" }, 800, 24, 4, "half-up" ], "expect": { "payment": { "minor": 136510, "currency": "GBP" }, "rows": [ { "period": 1, "payment": { "minor": 136510, "currency": "GBP" }, "interest": { "minor": 20000, "currency": "GBP" }, "principal": { "minor": 116510, "currency": "GBP" }, "balance": { "minor": 883490, "currency": "GBP" } }, { "period": 2, "payment": { "minor": 136510, "currency": "GBP" }, "interest": { "minor": 17670, "currency": "GBP" }, "principal": { "minor": 118840, "currency": "GBP" }, "balance": { "minor": 764650, "currency": "GBP" } }, { "period": 3, "payment": { "minor": 136510, "currency": "GBP" }, "interest": { "minor": 15293, "currency": "GBP" }, "principal": { "minor": 121217, "currency": "GBP" }, "balance": { "minor": 643433, "currency": "GBP" } }, { "period": 4, "payment": { "minor": 136510, "currency": "GBP" }, "interest": { "minor": 12869, "currency": "GBP" }, "principal": { "minor": 123641, "currency": "GBP" }, "balance": { "minor": 519792, "currency": "GBP" } }, { "period": 5, "payment": { "minor": 136510, "currency": "GBP" }, "interest": { "minor": 10396, "currency": "GBP" }, "principal": { "minor": 126114, "currency": "GBP" }, "balance": { "minor": 393678, "currency": "GBP" } }, { "period": 6, "payment": { "minor": 136510, "currency": "GBP" }, "interest": { "minor": 7874, "currency": "GBP" }, "principal": { "minor": 128636, "currency": "GBP" }, "balance": { "minor": 265042, "currency": "GBP" } }, { "period": 7, "payment": { "minor": 136510, "currency": "GBP" }, "interest": { "minor": 5301, "currency": "GBP" }, "principal": { "minor": 131209, "currency": "GBP" }, "balance": { "minor": 133833, "currency": "GBP" } }, { "period": 8, "payment": { "minor": 136510, "currency": "GBP" }, "interest": { "minor": 2677, "currency": "GBP" }, "principal": { "minor": 133833, "currency": "GBP" }, "balance": { "minor": 0, "currency": "GBP" } } ], "totalInterest": { "minor": 92080, "currency": "GBP" }, "totalPaid": { "minor": 1092080, "currency": "GBP" } } }, { "name": "a small loan where rounding dominates", "args": [ { "minor": 1000, "currency": "GBP" }, 1999, 12, 12, "half-up" ], "expect": { "payment": { "minor": 93, "currency": "GBP" }, "rows": [ { "period": 1, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 17, "currency": "GBP" }, "principal": { "minor": 76, "currency": "GBP" }, "balance": { "minor": 924, "currency": "GBP" } }, { "period": 2, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 15, "currency": "GBP" }, "principal": { "minor": 78, "currency": "GBP" }, "balance": { "minor": 846, "currency": "GBP" } }, { "period": 3, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 14, "currency": "GBP" }, "principal": { "minor": 79, "currency": "GBP" }, "balance": { "minor": 767, "currency": "GBP" } }, { "period": 4, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 13, "currency": "GBP" }, "principal": { "minor": 80, "currency": "GBP" }, "balance": { "minor": 687, "currency": "GBP" } }, { "period": 5, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 11, "currency": "GBP" }, "principal": { "minor": 82, "currency": "GBP" }, "balance": { "minor": 605, "currency": "GBP" } }, { "period": 6, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 10, "currency": "GBP" }, "principal": { "minor": 83, "currency": "GBP" }, "balance": { "minor": 522, "currency": "GBP" } }, { "period": 7, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 9, "currency": "GBP" }, "principal": { "minor": 84, "currency": "GBP" }, "balance": { "minor": 438, "currency": "GBP" } }, { "period": 8, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 7, "currency": "GBP" }, "principal": { "minor": 86, "currency": "GBP" }, "balance": { "minor": 352, "currency": "GBP" } }, { "period": 9, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 6, "currency": "GBP" }, "principal": { "minor": 87, "currency": "GBP" }, "balance": { "minor": 265, "currency": "GBP" } }, { "period": 10, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 4, "currency": "GBP" }, "principal": { "minor": 89, "currency": "GBP" }, "balance": { "minor": 176, "currency": "GBP" } }, { "period": 11, "payment": { "minor": 93, "currency": "GBP" }, "interest": { "minor": 3, "currency": "GBP" }, "principal": { "minor": 90, "currency": "GBP" }, "balance": { "minor": 86, "currency": "GBP" } }, { "period": 12, "payment": { "minor": 87, "currency": "GBP" }, "interest": { "minor": 1, "currency": "GBP" }, "principal": { "minor": 86, "currency": "GBP" }, "balance": { "minor": 0, "currency": "GBP" } } ], "totalInterest": { "minor": 110, "currency": "GBP" }, "totalPaid": { "minor": 1110, "currency": "GBP" } } }, { "name": "dollars, monthly for three years at 7.5%", "args": [ { "minor": 1500000, "currency": "USD" }, 750, 36, 12, "half-up" ], "expect": { "payment": { "minor": 46659, "currency": "USD" }, "rows": [ { "period": 1, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 9375, "currency": "USD" }, "principal": { "minor": 37284, "currency": "USD" }, "balance": { "minor": 1462716, "currency": "USD" } }, { "period": 2, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 9142, "currency": "USD" }, "principal": { "minor": 37517, "currency": "USD" }, "balance": { "minor": 1425199, "currency": "USD" } }, { "period": 3, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 8907, "currency": "USD" }, "principal": { "minor": 37752, "currency": "USD" }, "balance": { "minor": 1387447, "currency": "USD" } }, { "period": 4, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 8672, "currency": "USD" }, "principal": { "minor": 37987, "currency": "USD" }, "balance": { "minor": 1349460, "currency": "USD" } }, { "period": 5, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 8434, "currency": "USD" }, "principal": { "minor": 38225, "currency": "USD" }, "balance": { "minor": 1311235, "currency": "USD" } }, { "period": 6, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 8195, "currency": "USD" }, "principal": { "minor": 38464, "currency": "USD" }, "balance": { "minor": 1272771, "currency": "USD" } }, { "period": 7, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 7955, "currency": "USD" }, "principal": { "minor": 38704, "currency": "USD" }, "balance": { "minor": 1234067, "currency": "USD" } }, { "period": 8, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 7713, "currency": "USD" }, "principal": { "minor": 38946, "currency": "USD" }, "balance": { "minor": 1195121, "currency": "USD" } }, { "period": 9, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 7470, "currency": "USD" }, "principal": { "minor": 39189, "currency": "USD" }, "balance": { "minor": 1155932, "currency": "USD" } }, { "period": 10, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 7225, "currency": "USD" }, "principal": { "minor": 39434, "currency": "USD" }, "balance": { "minor": 1116498, "currency": "USD" } }, { "period": 11, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 6978, "currency": "USD" }, "principal": { "minor": 39681, "currency": "USD" }, "balance": { "minor": 1076817, "currency": "USD" } }, { "period": 12, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 6730, "currency": "USD" }, "principal": { "minor": 39929, "currency": "USD" }, "balance": { "minor": 1036888, "currency": "USD" } }, { "period": 13, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 6481, "currency": "USD" }, "principal": { "minor": 40178, "currency": "USD" }, "balance": { "minor": 996710, "currency": "USD" } }, { "period": 14, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 6229, "currency": "USD" }, "principal": { "minor": 40430, "currency": "USD" }, "balance": { "minor": 956280, "currency": "USD" } }, { "period": 15, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 5977, "currency": "USD" }, "principal": { "minor": 40682, "currency": "USD" }, "balance": { "minor": 915598, "currency": "USD" } }, { "period": 16, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 5722, "currency": "USD" }, "principal": { "minor": 40937, "currency": "USD" }, "balance": { "minor": 874661, "currency": "USD" } }, { "period": 17, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 5467, "currency": "USD" }, "principal": { "minor": 41192, "currency": "USD" }, "balance": { "minor": 833469, "currency": "USD" } }, { "period": 18, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 5209, "currency": "USD" }, "principal": { "minor": 41450, "currency": "USD" }, "balance": { "minor": 792019, "currency": "USD" } }, { "period": 19, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 4950, "currency": "USD" }, "principal": { "minor": 41709, "currency": "USD" }, "balance": { "minor": 750310, "currency": "USD" } }, { "period": 20, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 4689, "currency": "USD" }, "principal": { "minor": 41970, "currency": "USD" }, "balance": { "minor": 708340, "currency": "USD" } }, { "period": 21, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 4427, "currency": "USD" }, "principal": { "minor": 42232, "currency": "USD" }, "balance": { "minor": 666108, "currency": "USD" } }, { "period": 22, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 4163, "currency": "USD" }, "principal": { "minor": 42496, "currency": "USD" }, "balance": { "minor": 623612, "currency": "USD" } }, { "period": 23, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 3898, "currency": "USD" }, "principal": { "minor": 42761, "currency": "USD" }, "balance": { "minor": 580851, "currency": "USD" } }, { "period": 24, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 3630, "currency": "USD" }, "principal": { "minor": 43029, "currency": "USD" }, "balance": { "minor": 537822, "currency": "USD" } }, { "period": 25, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 3361, "currency": "USD" }, "principal": { "minor": 43298, "currency": "USD" }, "balance": { "minor": 494524, "currency": "USD" } }, { "period": 26, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 3091, "currency": "USD" }, "principal": { "minor": 43568, "currency": "USD" }, "balance": { "minor": 450956, "currency": "USD" } }, { "period": 27, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 2818, "currency": "USD" }, "principal": { "minor": 43841, "currency": "USD" }, "balance": { "minor": 407115, "currency": "USD" } }, { "period": 28, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 2544, "currency": "USD" }, "principal": { "minor": 44115, "currency": "USD" }, "balance": { "minor": 363000, "currency": "USD" } }, { "period": 29, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 2269, "currency": "USD" }, "principal": { "minor": 44390, "currency": "USD" }, "balance": { "minor": 318610, "currency": "USD" } }, { "period": 30, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 1991, "currency": "USD" }, "principal": { "minor": 44668, "currency": "USD" }, "balance": { "minor": 273942, "currency": "USD" } }, { "period": 31, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 1712, "currency": "USD" }, "principal": { "minor": 44947, "currency": "USD" }, "balance": { "minor": 228995, "currency": "USD" } }, { "period": 32, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 1431, "currency": "USD" }, "principal": { "minor": 45228, "currency": "USD" }, "balance": { "minor": 183767, "currency": "USD" } }, { "period": 33, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 1149, "currency": "USD" }, "principal": { "minor": 45510, "currency": "USD" }, "balance": { "minor": 138257, "currency": "USD" } }, { "period": 34, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 864, "currency": "USD" }, "principal": { "minor": 45795, "currency": "USD" }, "balance": { "minor": 92462, "currency": "USD" } }, { "period": 35, "payment": { "minor": 46659, "currency": "USD" }, "interest": { "minor": 578, "currency": "USD" }, "principal": { "minor": 46081, "currency": "USD" }, "balance": { "minor": 46381, "currency": "USD" } }, { "period": 36, "payment": { "minor": 46671, "currency": "USD" }, "interest": { "minor": 290, "currency": "USD" }, "principal": { "minor": 46381, "currency": "USD" }, "balance": { "minor": 0, "currency": "USD" } } ], "totalInterest": { "minor": 179736, "currency": "USD" }, "totalPaid": { "minor": 1679736, "currency": "USD" } } }, { "name": "a zero principal is refused", "args": [ { "minor": 0, "currency": "GBP" }, 500, 12, 12, "half-up" ], "expectError": "principal must be greater than zero" }, { "name": "a term that is not a whole number of payments", "args": [ { "minor": 100000, "currency": "GBP" }, 500, 7, 4, "half-up" ], "expectError": "is not a whole number of payments" }, { "name": "a negative rate is refused", "args": [ { "minor": 100000, "currency": "GBP" }, -50, 12, 12, "half-up" ], "expectError": "annualRateBasisPoints must be between 0 and 100000" } ]