Sherlock, Seems unlikely. Have you read through https://bugs.gnucash.org/show_bug.cgi?id=797796, https://bugs.gnucash.org/show_bug.cgi?id=775368, and https://bugs.gnucash.org/show_bug.cgi?id=775368 (the latter two are referenced in https://bugs.gnucash.org/show_bug.cgi?id=797796#c8) so that you thoroughly understand the problem and the design of the algorithm?
Regards, John Ralls > On Aug 24, 2025, at 12:13, Sherlock Holmes <sh025...@gmail.com> wrote: > > John, > > Here's where I'm at: I suspect the initial "account" commodity list entry in > the "average cost" algorithm has been a bit off since Oct 16, 2008. It > appears the share and value signs are supposed to be swapped on assignment to > the "account" commodity list, but are not when the list is first created. > See the attached patch file. > > Thoughts? > > Regards, > > Sherlock > > > > On 8/24/25 10:21 AM, Sherlock Holmes wrote: >> John, >> >> I'm still working it. It appears to me that both algorithms may have gone a >> bit awry sometime ago although the "average price" may be okay. >> Specifically, the initial comm-list entry became an else case which meant it >> needed to perform the assignments and, in the "average cost", the sign >> handling doesn't >> >> My WAG was just that. Just a quick check to see if I was in the right area. >> >> >> >> Regards, >> >> Sherlock >> >> >> On 8/24/25 9:16 AM, John Ralls wrote: >>> Sherlock, >>> >>> What’s this part for? It seems irrelevant to Chang Wang’s example as that >>> doesn’t use trading accounts: >>> - >>> - ;; However skip splits in trading accounts as these counterbalance >>> - ;; the actual value and share amounts back to zero >>> - ((eqv? (xaccAccountGetType (xaccSplitGetAccount (car comm-splits))) >>> - ACCT-TYPE-TRADING) >>> - (loop (cdr comm-splits) >>> - sumlist)) >>> >>> I guess you did a bisect to arrive at the 2019 change date. There were 8 >>> changes to gnc-commodity-utils.scm that day. Which one was the culprit? >>> >>> Regards, >>> John Ralls >>> >>> >>>> On Aug 23, 2025, at 20:18, Sherlock Holmes <sh025...@gmail.com> >>>> <mailto:sh025...@gmail.com> wrote: >>>> >>>> I concur. >>>> >>>> There are significant differences in the implementation between >>>> gnc:get-exchange-totals and gnc:get-exchange-cost-totals that I believe >>>> are the root cause of the issue. These differences appear to date back to >>>> May 3, 2019. As a WAG, I modified gnc:get-exchange-cost-totals to match >>>> gnc:get-exchange-totals in the attached patch and the issue you've raised >>>> appears to be resolved. I have not done any further testing, >>>> >>>> Regards, >>>> >>>> Sherlock >>>> >>>> >>>> >>>> On 8/23/25 2:20 PM, Chang Wang wrote: >>>>> Thanks for the reminder. I'll post to the user list in the future. >>>>> However, in the above example, there is no gain or loss due to currency >>>>> exchange as the exchange rates are set to 1 so no currency gain/loss >>>>> needs to be booked. And the price source is set to be Last up through >>>>> report date instead of average cost. Therefore, I think these are >>>>> different issues. >>>>> >>>>> On Sat, Aug 23, 2025 at 3:51 PM John Ralls <jra...@ceridwen.us >>>>> <mailto:jra...@ceridwen.us>> wrote: >>>>>> Oddly I just told somebody on IRC the same answer: >>>>>> https://bugs.gnucash.org/show_bug.cgi?id=797796 >>>>>> >>>>>> Unless you’re willing to submit a PR, this is a user-list topic, so in >>>>>> the future please use gnucash-user instead of gnucash-devel. >>>>>> >>>>>> Regards, >>>>>> John Ralls >>>>>> >>>>>> > On Aug 23, 2025, at 1:43 PM, Chang Wang <wangchang...@gmail.com >>>>>> > <mailto:wangchang...@gmail.com>> wrote: >>>>>> > >>>>>> > Hi all, >>>>>> > I noticed an issue with the Trial Balance report when using stock >>>>>> > trading and multiple currencies. Even when transactions are balanced, >>>>>> > the Trial Balance report appears to break due to incorrect calculation >>>>>> > of unrealized gains. >>>>>> > >>>>>> > I've attached an uncompressed minimal example to illustrate the >>>>>> > problem. >>>>>> > >>>>>> > Steps to reproduce: >>>>>> > Open the attached book. >>>>>> > Generate a Trial Balance report with reporting currency set to USD, >>>>>> > price source set to Last up through report date, and enable Show >>>>>> > Foreign Currencies and Exchange Rates. >>>>>> > >>>>>> > Observed behavior: >>>>>> > The report shows an Unrealized Gain of $20,800, which is incorrect. >>>>>> > >>>>>> > Expected behavior: >>>>>> > The Unrealized Gain should be $200. >>>>>> > >>>>>> > Explanation: >>>>>> > The example contains three transactions: >>>>>> > 1) 08/02/2025 - Buy one stock for 10,200 JPY. >>>>>> > 2) 08/03/2025 - Exchange 100,000 JPY for 100,000 USD. >>>>>> > 3) 08/04/2025 - Buy one stock for 10,400 JPY. >>>>>> > >>>>>> > The JPY/USD rate is fixed at 1 on all days, so there should be no >>>>>> > realized or unrealized currency gains. Stock prices are set at 10X00 >>>>>> > JPY on 08/0X/2025, where X = 1, 2, 3, 4. >>>>>> > >>>>>> > Therefore, in USD reporting currency, the Trial Balance should show >>>>>> > unrealized gains as: >>>>>> > (10,400 * 2) - 10,200 - 10,400 = 200 JPY = 200 USD >>>>>> > >>>>>> > Notably, the Balance Sheet report does display the correct unrealized >>>>>> > gain. And if transaction 3) or transaction 2) is removed, the Trial >>>>>> > Balance turns out to be correct. >>>>>> > >>>>>> > I'm not familiar with Scheme, so I wasn't able to locate the problem >>>>>> > in the source code. I also wasn't able to file a bug on Bugzilla, >>>>>> > since the registration function appears to be broken. >>>>>> > >>>>>> > Thanks for your attention, >>>>>> > Chang >>>>>> > <tb.gnucash>_______________________________________________ >>>>> > <commodity-utilities.scm.patch>
_______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel