# lending.daily-interest Interest on an account whose balance changes during the period: a savings account with deposits, a loan with a payment mid-month, an overdraft that goes in and out. Each balance accrues balance × rate × (the year fraction for the days it was held), under the day-count convention the contract names, and the pieces are added up. ## How it is computed - `balances` is the balance history: each entry holds from its date until the next entry's date. The first entry must start on or before `fromIso` (the opening balance); entries after `toIso` are ignored. - The period is `fromIso` included to `toIso` excluded, the usual accrual convention: 1 January to 31 January is 30 days of interest. - Each piece's year fraction comes from dates.day-count-fraction (ACT/365F, ACT/360, 30/360, 30E/360, ACT/ACT ISDA), as an exact fraction. - The pieces are summed exactly with math.rational, and the total is rounded once, with the mode you pass. `exact` is that unrounded total in minor units, for audit and for carrying fractions of a penny into the next period if your ledger does that. Rounding once is the point. Rounding each day (or each balance change) and adding the rounded amounts drifts: three days at 0.23p each would post 0p where the true total is 0.68p, and more balance changes would mean more drift. Some ledgers do post whole pence daily; if yours does, call this once per day instead. ## Signs A negative balance (overdrawn, or a loan held as a debt) accrues negative interest, and a negative rate charges a positive balance. The rounding modes are those of math.round-div, symmetric about zero: `down` is towards zero, `up` away from it. ## Splitting and 30/360 Under ACT/365F, ACT/360 and ACT/ACT the pieces add up to the whole period exactly. Under 30/360 each piece is measured on its own, as a contract that names 30/360 per balance period would, so a piece ending on the 31st can differ by a day from measuring the whole month at once. ## Limits The exact running total must fit math.rational (numerator and denominator within 2^53 - 1); that holds for balances into the hundreds of millions of pounds at ordinary rates, and a larger one is an error ("rational overflow"), never a wrong answer. The rate is -100000 to 100000 basis points, and the rate is fixed for the period: for a rate change, call once per rate and add.