<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>