<html aria-label="message body"><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">Sherlock,<div><br></div><div>Seems unlikely. Have you read through <a href="https://bugs.gnucash.org/show_bug.cgi?id=797796">https://bugs.gnucash.org/show_bug.cgi?id=797796</a>, <a href="https://bugs.gnucash.org/show_bug.cgi?id=775368">https://bugs.gnucash.org/show_bug.cgi?id=775368</a>, and <a href="https://bugs.gnucash.org/show_bug.cgi?id=775368">https://bugs.gnucash.org/show_bug.cgi?id=775368</a> (the latter two are referenced in <a href="https://bugs.gnucash.org/show_bug.cgi?id=797796#c8">https://bugs.gnucash.org/show_bug.cgi?id=797796#c8</a>) so that you thoroughly understand the problem and the design of the algorithm?</div><div><br></div><div>Regards,</div><div>John Ralls</div><div><br></div><div><div><br><blockquote type="cite"><div>On Aug 24, 2025, at 12:13, Sherlock Holmes <sh025622@gmail.com> wrote:</div><br class="Apple-interchange-newline"><div>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div><p>John,</p><p>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.</p><p>Thoughts?</p><p>Regards,</p><p>Sherlock</p><p><br>
</p>
<div class="moz-cite-prefix">On 8/24/25 10:21 AM, Sherlock Holmes
wrote:<br>
</div>
<blockquote type="cite" cite="mid:3a69f004-d010-4be8-9947-f36529fbec16@gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><p>John,</p><p>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 </p><p>My WAG was just that. Just a quick check to see if I was in
the right area. </p><p><br>
</p><p>Regards,</p><p>Sherlock </p><div> <br class="webkit-block-placeholder"></div>
<div class="moz-cite-prefix">On 8/24/25 9:16 AM, John Ralls wrote:<br>
</div>
<blockquote type="cite" cite="mid:F631D996-F789-4651-AC34-A2CFB83EEF7A@ceridwen.us">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div> Sherlock,</div>
<div><br>
</div>
What’s this part for? It seems irrelevant to Chang Wang’s
example as that doesn’t use trading accounts:
<div>
<div>-</div>
<div>- ;; However skip splits in trading accounts as
these counterbalance</div>
<div>- ;; the actual value and share amounts back to
zero</div>
<div>- ((eqv? (xaccAccountGetType (xaccSplitGetAccount
(car comm-splits)))</div>
<div>- ACCT-TYPE-TRADING)</div>
<div>- (loop (cdr comm-splits)</div>
<div>- sumlist))</div>
<div> </div>
<div>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?</div>
<div><br>
</div>
<div>Regards,</div>
<div>John Ralls</div>
<div><br>
</div>
<div><br>
<blockquote type="cite">
<div>On Aug 23, 2025, at 20:18, Sherlock Holmes <a class="moz-txt-link-rfc2396E" href="mailto:sh025622@gmail.com" moz-do-not-send="true"><sh025622@gmail.com></a>
wrote:</div>
<br class="Apple-interchange-newline">
<div>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div><p>I concur.</p><p>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,</p><p>Regards,</p><p>Sherlock</p><p><br>
</p>
<div class="moz-cite-prefix">On 8/23/25 2:20 PM, Chang
Wang wrote:<br>
</div>
<blockquote type="cite" cite="mid:CAGyuYwAVUyknUp=af6_31Ga8+qPh5g7xjREV+NK6iy5tmn_wYw@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div>Thanks for the reminder. I'll post to the
user list in the future.</div>
<div>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.</div>
</div>
<br>
<div class="gmail_quote gmail_quote_container">
<div dir="ltr" class="gmail_attr">On Sat, Aug 23,
2025 at 3:51 PM John Ralls <<a href="mailto:jralls@ceridwen.us" moz-do-not-send="true" class="moz-txt-link-freetext">jralls@ceridwen.us</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Oddly
I just told somebody on IRC the same answer: <a href="https://bugs.gnucash.org/show_bug.cgi?id=797796" rel="noreferrer" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">https://bugs.gnucash.org/show_bug.cgi?id=797796</a><br>
<br>
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.<br>
<br>
Regards,<br>
John Ralls<br>
<br>
> On Aug 23, 2025, at 1:43 PM, Chang Wang
<<a href="mailto:wangchang327@gmail.com" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">wangchang327@gmail.com</a>>
wrote:<br>
> <br>
> Hi all,<br>
> 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.<br>
> <br>
> I've attached an uncompressed minimal
example to illustrate the problem.<br>
> <br>
> Steps to reproduce:<br>
> Open the attached book.<br>
> 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.<br>
> <br>
> Observed behavior:<br>
> The report shows an Unrealized Gain of
$20,800, which is incorrect.<br>
> <br>
> Expected behavior:<br>
> The Unrealized Gain should be $200.<br>
> <br>
> Explanation:<br>
> The example contains three transactions:<br>
> 1) 08/02/2025 - Buy one stock for 10,200
JPY.<br>
> 2) 08/03/2025 - Exchange 100,000 JPY for
100,000 USD.<br>
> 3) 08/04/2025 - Buy one stock for 10,400
JPY.<br>
> <br>
> 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.<br>
> <br>
> Therefore, in USD reporting currency, the
Trial Balance should show unrealized gains as:<br>
> (10,400 * 2) - 10,200 - 10,400 = 200 JPY =
200 USD<br>
> <br>
> 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.<br>
> <br>
> 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.<br>
> <br>
> Thanks for your attention,<br>
> Chang<br>
>
<tb.gnucash>_______________________________________________</blockquote>
</div>
<br>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</blockquote>
</div>
<span id="cid:654B967E-1840-4CF0-8579-E94E711E68B9"><commodity-utilities.scm.patch></span></div></blockquote></div><br></div></body></html>