> On Jan 23, 2025, at 00:01, Genieliu <genie_...@outlook.com> wrote:
> 
> Dear GnuCash Community,
> 
> I am a newcomer to GnuCash and have been exploring its features. While using 
> the loan repayment tool to generate scheduled transactions, I encountered an 
> issue with the loan review functionality, where the repayment schedule 
> appears to be misaligned. This problem has been previously discussed on 
> Reddit 
> (https://www.reddit.com/r/GnuCash/comments/umzb91/mortgage_amortization/) and 
> a bug report has been filed on Bugzilla 
> (https://bugs.gnucash.org/show_bug.cgi?id=797824).
> 
> After investigating the issue, I believe I have identified the root cause. As 
> I am unfamiliar with the contribution process for GNU projects, I thought 
> this would be the appropriate channel to share my findings.
> 
> Steps to Reproduce the Issue:
> 
> 1. Navigate to Actions -> Scheduled Transactions -> Mortgage & Loan 
> Repayments.
> 
> 2. Loan Details: Amount 1000, Start Date is 02/01/2025, Length: 6 Months 
> Remaining: 6
> 
> 3. Loan Repayment: Monthly Start Date is 02/01/2025, Every 1 Month on the 
> 1st, weekends: no change
> 
> 4. Loan Review: when selecting the current year, we got the schedules 
> starting from 01/31/2025, 02/01/2025 ... 06/01/2025. While if we choose whole 
> loan, the 01/31/2025 is missing and the last repayment is still 06/01/2025
> 
> The expected repayment schedule should be 02/01/2025, 03/01/2025 ... 
> 07/01/2025. It seems the first repayment is incorrectly set to one day before 
> the start date, causing the entire schedule to shift.
> 
> I think the issue originates in the loan_rev_recalc_schedule function within 
> the assistant-loan.cpp file, 
> https://github.com/Gnucash/gnucash/blob/f6c73b15fb6896b91bbbf1845cee41d7077ee5b3/gnucash/gnome/assistant-loan.cpp#L2062
> 
> In this function, curDate is initialized as the start date minus one day, 
> then we got the nextDate.
> 
> Subsequently, the for loop uses curDate as the first repayment date, 
> resulting in the first repayment being scheduled one day prior to the 
> intended start date. This misalignment propagates through the entire 
> repayment schedule, shifting the final repayment date as well.
> 
> curDate = start;
> 
> g_date_subtract_days( &curDate, 1 );
> 
> recurrenceListNextInstance(ldd->ld.repayment_schedule, &curDate, &nextDate);
> 
> I hope my analysis helps in confirming the root cause of this issue. I would 
> be more than happy to submit a pull request to address the problem. Please 
> let me know if additional details or further clarification are required to 
> proceed.

Thanks for digging into this and welcome to GnuCash.

I don’t think there’s any common contributor process for Gnu projects and aside 
from using their license and a couple of Gnu-hosted libraries we don’t interact 
with them. How we do things isn’t likely to apply to anyone else, and 
vice-versa.

With that out of the way, the best place to discuss bug root causes is on the 
bug report. Please repost your analysis there.

Regards,
John Ralls

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to