<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <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>
    <p> </p>
    <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"><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>
  </body>
</html>