Hi,

I believe leap year handling should apply to cumulative loans as well. Actual 
means 365 for non-leap years and 366 for leap-years.

Regards,  
Adam S

> On Oct 28, 2026, at 7:30 AM, Senesh Perera <[email protected]> wrote:
> 
> Hi all,
> 
> I am Senesh. I recently contributed a few fixes (FINERACT-2950, 
> FINERACT-2954, FINERACT-2945). While reading the loan schedule code, I 
> noticed something I would like to check with you before I open a ticket.
> 
> What I found (from code reading only):
> 
> In LoanApplicationTerms.calculatePeriodsInOneYear(), for DAILY interest with 
> DaysInYearType = ACTUAL on cumulative (declining balance) loans, the code 
> uses DefaultPaymentPeriodsInOneYearCalculator.calculate(DAYS). That method 
> returns a fixed 365. It never checks if the year is a leap year.
> 
> The progressive engine (ProgressiveEMICalculator) does handle leap years: it 
> uses 366 in a leap year and splits periods that cross a year boundary. So the 
> same product setting (ACTUAL) gives different results depending on which 
> schedule engine processes the loan.
> 
> Related tickets I found:
> 
> - FINERACT-2197 added leap-year-aware day counts, but its acceptance criteria 
> say "Only supported for Progressive loans".
> - FINERACT-2492 (AprCalculator fix) treats ACTUAL resolving to 365 on 
> cumulative loans as correct, and says it would automatically benefit from any 
> future leap-year support.
> - FINERACT-1982 (open) asks for /365 vs /366 on daily charge accrual. That is 
> charges, not loan interest.
> 
> Example (my hand calculation from the formula, I have not run it yet):
> 
> Declining balance, daily interest, ACTUAL/ACTUAL, 12% annual rate, 10,000 
> principal, disbursed 2024-01-01, first due date 2024-02-01 (31 days):
> 
>   - Current code:     10,000 x 12% x 31/365 = 101.92
>   - Leap-year aware:  10,000 x 12% x 31/366 = 101.64
> 
> My questions:
> 
> 1. Is 365 for cumulative loans with ACTUAL intended legacy behavior, or 
> should ACTUAL be leap-year aware there too?
> 2. If it should be fixed, would you prefer it as a bug ticket or as an 
> improvement that extends FINERACT-2197 to cumulative loans?
> 3. I expect some existing integration tests with daily interest and 2024 
> dates may assert the 365-based numbers, and would need new expected values. 
> Is that acceptable?
> 
> I would be glad to open a JIRA ticket and work on a fix with a unit test, if 
> you think it is worth doing. I wanted to ask first because FINERACT-2197 
> explicitly limited this to progressive loans.
> 
> Thank you,
> Senesh
> GitHub: https://github.com/ImalkaPerera

Reply via email to