Set the boundaries first
Record the date funds are deposited, the expected use date and the contract rule for including the first and last day. Calendar time between events and interest-bearing days can differ.
In a daily simple-accrual model, income for an interval is amount × annual rate × days / annual basis. The basis is an assumption of the model, not something to infer from the number of days in a month. Crossing a leap year requires separate intervals. This is an educational model, not a claim that every Russian deposit uses this rule.
For 80,000 roubles at 9% for 45 days on a 365-day basis, income is 887.67 roubles. State that taxes, fees, top-ups and capitalization are absent.
Do not average different intervals by eye
If 20 days use a 365-day year and 25 days use a 366-day year, calculate 80,000 × 0.09 × (20 / 365 + 25 / 366), approximately 886.32 roubles. Applying 365 to the entire term gives another result.
For a changing rate, calculate separate intervals and add income only when the base has not changed. On 100,000 roubles for 180 days, 10% throughout gives 4,931.51 roubles; 12% for the first 60 days and 8% for the next 120 gives 4,602.74 roubles. A simple average of the rates is not valid because the durations differ.
Capitalization changes the sequence
When income joins principal, the next interval uses the new base. Do not calculate every interval on the original balance if capitalization occurred mid-term.
Top-ups and withdrawals also create a new base. Record their dates and do not treat the customer’s own contribution as earned interest. A deposit made on the last day depends on the contract’s accrual-start rule.
Early closure is a separate contractual scenario
Income calculated for elapsed days at the ordinary rate does not prove that the same amount will be paid on closure. A product may recalculate the whole term or already paid interest.
Keep two lines in the scenario: income if the contract continues to the planned date, and the result if it closes on the selected day. If the exit rule is unknown, keep the second line undetermined. Check that intervals neither overlap nor leave unexplained gaps.