Skip to content

FINERACT-2197: Fix FEB_29_PERIOD_ONLY strategy for cross-year repayment periods#5729

Open
pratikpatel-aurochs wants to merge 2 commits intoapache:developfrom
aurochs-dev:FINERACT-2197-fix-feb29-cross-year
Open

FINERACT-2197: Fix FEB_29_PERIOD_ONLY strategy for cross-year repayment periods#5729
pratikpatel-aurochs wants to merge 2 commits intoapache:developfrom
aurochs-dev:FINERACT-2197-fix-feb29-cross-year

Conversation

@pratikpatel-aurochs
Copy link
Copy Markdown

@pratikpatel-aurochs pratikpatel-aurochs commented Apr 1, 2026

Description

isPeriodContainsFeb29 in ProgressiveEMICalculator only checked the repaymentPeriodFromDate's year for leap year. A repayment period spanning from a non-leap year into a leap year (e.g., Dec 1, 2023 → Mar 1, 2024) returned false even though Feb 29, 2024 falls
within the period.

This caused two downstream issues for FEB_29_PERIOD_ONLY strategy:

  • numberOfDaysFeb29PeriodOnly returned 365 instead of 366
  • partialPeriodCalculationNeeded was false, skipping the year-splitting interest calculation

Fix: Iterate all years the period spans and check each leap year's Feb 29 against the range.

Impact: Affects progressive loans using ACTUAL days-in-year + FEB_29_PERIOD_ONLY with non-monthly repayment frequencies (bi-monthly, quarterly) where a period crosses from a non-leap year past Feb 29 of the next leap year. Monthly repayments are not affected.

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.

Your assigned reviewer(s) will follow our guidelines for code reviews.

@DeathGun44
Copy link
Copy Markdown
Contributor

@pratikpatel-aurochs please sign your commits ,refer https://github.com/apache/fineract/blob/develop/CONTRIBUTING.md#pull-requests for more information.

@pratikpatel-aurochs pratikpatel-aurochs force-pushed the FINERACT-2197-fix-feb29-cross-year branch from 5e874ab to a8ebf5c Compare April 1, 2026 14:01
@pratikpatel-aurochs
Copy link
Copy Markdown
Author

@pratikpatel-aurochs please sign your commits ,refer https://github.com/apache/fineract/blob/develop/CONTRIBUTING.md#pull-requests for more information.

Done

Copy link
Copy Markdown
Contributor

@DeathGun44 DeathGun44 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The failing test cases seem unrelated, LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants