<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)? in DAX Commands and Tips</title>
    <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/2136884#M49072</link>
    <description>&lt;P&gt;See if this explanation from the gurus at SQLBI helps:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://youtu.be/m-qhcDcNKrE" target="_self"&gt;https://youtu.be/m-qhcDcNKrE&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 15 Oct 2021 08:27:33 GMT</pubDate>
    <dc:creator>PaulDBrown</dc:creator>
    <dc:date>2021-10-15T08:27:33Z</dc:date>
    <item>
      <title>Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/2135547#M49040</link>
      <description>&lt;P&gt;&lt;STRONG&gt;My goal:&lt;/STRONG&gt; To use DAX to calculate &lt;U&gt;Ending Inventory&lt;/U&gt; as a function of &lt;STRONG&gt;MAX&lt;/STRONG&gt;(0,&amp;nbsp;&lt;U&gt;Beginning Inventory&lt;/U&gt; + &lt;U&gt;Receipts&lt;/U&gt; - &lt;U&gt;Forecast)&lt;/U&gt;, for every day and every SKU.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;My Issue:&lt;/STRONG&gt; I do not know how to lookup the previous day's &lt;U&gt;Ending Inventory&lt;/U&gt; without PowerBI declaring a Circular Discrepancy.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Clarification&lt;/STRONG&gt;: Because &lt;U&gt;Ending Inventory&lt;/U&gt; rounds up to 0 at the end of each day if the formula is negative, I &lt;U&gt;&lt;STRONG&gt;cannot&lt;/STRONG&gt;&lt;/U&gt; collapse my inventory calculation into a single column and subtract all forecast up to a given date and add all receipts up to a given date like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;(PseudoCode)
Invalid Projected Inventory =
Max(
    0,
    LOOKUPVALUE(Current Inventory)
        + CALCULATE(SUM(Receipts.QTY), Receipts.Date &amp;lt;= Date, Receipts.Item = Item)
        - CALCULATE(SUM(Forecast.QTY), Forecast.Date &amp;lt;= Date, Forecast.Item = Item)
)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The reason I cannot use that single Projected Inventory column is to consider the following example:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Inventory for today (Oct 14) is 100&lt;/LI&gt;&lt;LI&gt;Total sum of Forecast thru Oct 20 is 200&lt;/LI&gt;&lt;LI&gt;Receipt of 100 will arrive Oct 21&lt;/LI&gt;&lt;LI&gt;Forecast on Oct 21, 2021 is 40&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Desired Output&lt;/STRONG&gt;&lt;/U&gt;: Projected Inventory on Oct 21 is &lt;U&gt;&lt;STRONG&gt;60&lt;/STRONG&gt;&lt;/U&gt;:&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Inventory at start of Oct 21 is 0 (100 current inventory - 200 forecast, rounded up to 0)&lt;/LI&gt;&lt;LI&gt;Receipt of 100 on Oct 21 - Forecast of 40 on Oct 21 = Projected Inventory of &lt;U&gt;&lt;STRONG&gt;60&lt;/STRONG&gt;&lt;/U&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Output of Invalid Formula:&lt;/STRONG&gt;&lt;/U&gt;&amp;nbsp;Projected Inventory = &lt;U&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Current Inventory of 100 - forecast thru Oct 21 of 240 + receipts of 100 = -40&lt;/LI&gt;&lt;LI&gt;Projected Inventory = Max(0, -40) = &lt;U&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/U&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is a screenshot of all the data I'm using in my test model (text data at the bottom), including my desired input which I can get working in Excel.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And here is the same setup in PowerBI:&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&amp;nbsp;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But when I try to use DAX to calculate the Beginning and Ending inventory of each day, I get a circular discrepancy. &lt;U&gt;&lt;STRONG&gt;Is there any way around this within DAX&lt;/STRONG&gt;&lt;/U&gt;?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here are my formulas for the calculated table:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Table Source:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Daily Inventory = GENERATe(distinct('Date Table'[Date]),  DISTINCT(Items[Item ID]))&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Beginning Inventory:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Beginning Inventory = 
if('Daily Inventory'[Date]=today(), 
    calculate(sum('Current Inventory'[Current Inventory]),filter('Current Inventory', 'Current Inventory'[Item ID]=[Item ID])),
    LOOKUPVALUE('Daily Inventory'[Ending Inventory],'Daily Inventory'[Item ID], [Item ID], 'Daily Inventory'[Date], [Date]-1)
)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Receipts:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Receipts = CALCULATE(sum(Receipts[QTY]), filter(Receipts, Receipts[Date]=earlier([Date])), filter(Receipts,Receipts[Item ID]=earlier([Item ID])))&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Forecast:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Forecast = CALCULATE(sum(Forecast[QTY]), filter(Forecast, Forecast[Date]=earlier([Date])), filter(Forecast,Forecast[Item ID]=earlier([Item ID])))&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ending Inventory:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Ending Inventory = max([Beginning Inventory] + [Receipts] - [Forecast],0)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And here are my data tables:&lt;/P&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Date Table&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10/14/2021&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10/15/2021&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10/16/2021&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10/17/2021&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10/18/2021&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Items&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Item ID&lt;/TD&gt;&lt;TD&gt;Item Name&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;TestSKU1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;TestSKU2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Current Inventory&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Item ID&lt;/TD&gt;&lt;TD&gt;Current Inventory&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Forecast&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Item ID&lt;/TD&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;QTY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10/14/2021&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10/15/2021&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10/16/2021&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10/17/2021&lt;/TD&gt;&lt;TD&gt;24&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10/18/2021&lt;/TD&gt;&lt;TD&gt;16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;10/14/2021&lt;/TD&gt;&lt;TD&gt;43&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;10/15/2021&lt;/TD&gt;&lt;TD&gt;46&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;10/16/2021&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;10/17/2021&lt;/TD&gt;&lt;TD&gt;22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;10/18/2021&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Receipts&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Item ID&lt;/TD&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;QTY&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10/17/2021&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;10/17/2021&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Fri, 15 Oct 2021 16:07:27 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/2135547#M49040</guid>
      <dc:creator>Funk-E-Guy</dc:creator>
      <dc:date>2021-10-15T16:07:27Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/2136884#M49072</link>
      <description>&lt;P&gt;See if this explanation from the gurus at SQLBI helps:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://youtu.be/m-qhcDcNKrE" target="_self"&gt;https://youtu.be/m-qhcDcNKrE&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Oct 2021 08:27:33 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/2136884#M49072</guid>
      <dc:creator>PaulDBrown</dc:creator>
      <dc:date>2021-10-15T08:27:33Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/2137815#M49085</link>
      <description>&lt;P&gt;Thank you for the video. Unfortunately it does not appear to solve my issue (I tried all 3 solutions to make sure). The video seems focused on finding more indirect-hidden circular depencies, whereas my issue could be classified as a "direct-visible circular discrepancy".&lt;BR /&gt;&lt;BR /&gt;In other words, my calculated table has Column A referencing Column B, and Column B references Column A. But what's frustrating is that PowerBI seems to flag this as an issue, despite my code filtering out true discrepancies by making the reference sequential - by that I mean that Column A references column B from the &lt;U&gt;previous&lt;/U&gt; row, and Column B references Column A from the &lt;U&gt;current&lt;/U&gt; row.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's an example in Excel, to help illustrate what I mean:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;BR /&gt;&lt;BR /&gt;Excel handles this just fine when I set up a test example. I need a way to achieve the same goal within PowerBI, because all of the fields I need to use for the calculation is generated in PowerBI.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Oct 2021 16:02:10 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/2137815#M49085</guid>
      <dc:creator>Funk-E-Guy</dc:creator>
      <dc:date>2021-10-15T16:02:10Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3217663#M117506</link>
      <description>&lt;P&gt;did you find a solution? Am struggling with a similar scenario..&lt;/P&gt;</description>
      <pubDate>Wed, 03 May 2023 11:14:05 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3217663#M117506</guid>
      <dc:creator>Satya2804</dc:creator>
      <dc:date>2023-05-03T11:14:05Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3218832#M117589</link>
      <description>&lt;P&gt;Sorry, I gave up trying to find a solution that would allow me to forecast going to 0 and receiving the full amount in the future. Anything I could do in one function can only take me to 0, or negative, in which case the cumulative receipts don't add up properly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I ended up settling for just keeping the visibility of when I'd go out of stock, and anything past that becomes an unknown.&lt;/P&gt;</description>
      <pubDate>Wed, 03 May 2023 23:56:21 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3218832#M117589</guid>
      <dc:creator>Funk-E-Guy</dc:creator>
      <dc:date>2023-05-03T23:56:21Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3218909#M117595</link>
      <description>&lt;P&gt;See if the picture below is the similar result you want, realize the end of the previous period, and put it at the beginning of the next period.&lt;/P&gt;&lt;P&gt;&lt;A href="https://demo.jiaopengzi.com/pbi/150-full.html" target="_blank"&gt;https://demo.jiaopengzi.com/pbi/150-full.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://jiaopengzi.com/video/video-101" target="_blank"&gt;https://jiaopengzi.com/video/video-101&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 May 2023 01:33:27 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3218909#M117595</guid>
      <dc:creator>jiaopengzi</dc:creator>
      <dc:date>2023-05-04T01:33:27Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3220394#M117693</link>
      <description>&lt;P&gt;Firewall's blocking your links. Can you please elaborate; does your logic capture the following case?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="2"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Beginning Inv&lt;/TD&gt;&lt;TD&gt;Demand&lt;/TD&gt;&lt;TD&gt;Receipts&lt;/TD&gt;&lt;TD&gt;Ending Inventory&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;2000&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#3366FF"&gt;&lt;STRONG&gt;1000&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My obstacle is this edge case where Ending Inventory wants to go negative, in which case I need it to stay 0. For my purposes, we don't have a backlog, so "Negative Inventory" is just "Lost Sales", not "Backlog".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If I round up negative values to 0, then the numbers are still off because the demand and receipts are rolling. In other words, with the above case:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Inv = 400&lt;/P&gt;&lt;P&gt;Rolling Demand = 2000&lt;/P&gt;&lt;P&gt;Rolling Receipts = 2000&lt;/P&gt;&lt;P&gt;Ending Inventory = 400 + 2000 - 2000 = 400 (wrong, should be &lt;FONT color="#3366FF"&gt;&lt;STRONG&gt;1000&lt;/STRONG&gt;&lt;/FONT&gt;).&lt;/P&gt;</description>
      <pubDate>Thu, 04 May 2023 15:35:03 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3220394#M117693</guid>
      <dc:creator>Funk-E-Guy</dc:creator>
      <dc:date>2023-05-04T15:35:03Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3221809#M117771</link>
      <description>&lt;P&gt;Oh ok.. am still struggling to just use the previous week balance into next week blance calculation. How did you achieve that? Can you share the file or the measure logic please?&lt;/P&gt;</description>
      <pubDate>Fri, 05 May 2023 09:56:50 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3221809#M117771</guid>
      <dc:creator>Satya2804</dc:creator>
      <dc:date>2023-05-05T09:56:50Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3221917#M117779</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's the information you're looking for.&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;In the future, please upload an attachment instead; I spent quite a while copying from it.&lt;/LI&gt;&lt;LI&gt;The difficult part is writing the measure of "01_Beginning Inventory". I have provided compatibility for various time dimensions (daily, weekly, monthly, quarterly, semi-annually, and annually) of the measure.&lt;/LI&gt;&lt;LI&gt;Note that your "Current Inventory" table should include a date dimension.&lt;/LI&gt;&lt;LI&gt;Essentially, there are only inbound and outbound operations. Initial, final, and inventory values are derived from these, so the model should be designed with this logic in mind.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;01_Beginning Inventory = 
VAR DATE_START0 =
    CALCULATE ( FIRSTDATE ( 'Calendar'[dates] ), ALL ( 'Calendar' ) )
VAR DATE_END0 =
    LASTDATE ( 'Calendar'[dates] )
VAR TF0 =
    HASONEVALUE ( 'Calendar'[dates] ) //日
VAR TF1 =
    HASONEVALUE ( 'Calendar'[YearWeek] ) //周
VAR TF2 =
    HASONEVALUE ( 'Calendar'[YearMonth] ) //月
VAR TF3 =
    HASONEVALUE ( 'Calendar'[YearQuarter] ) //季度
VAR TF4 =
    HASONEVALUE ( 'Calendar'[YearHalf] ) //半年度
VAR TF5 =
    HASONEVALUE ( 'Calendar'[FY00] ) //年度
VAR N0 =
    SWITCH (
        TRUE (),
        TF0, 0,
        TF1,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfWeek] ),
                LASTDATE ( 'Calendar'[EndOfWeek] ),
                DAY
            ),
        TF2,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfMonth] ),
                LASTDATE ( 'Calendar'[EndOfMonth] ),
                DAY
            ),
        TF3,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfQuarter] ),
                LASTDATE ( 'Calendar'[EndOfQuarter] ),
                DAY
            ),
        TF4,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfHalfYear] ),
                LASTDATE ( 'Calendar'[EndOfHalfYear] ),
                DAY
            ),
        TF5,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfYear] ),
                LASTDATE ( 'Calendar'[EndOfYear] ),
                DAY
            ),
        0
    ) + 1
VAR DATE_END1 =
    SWITCH (
        TRUE (),
        TF0, DATEADD ( DATE_END0, - N0, DAY ),
        TF1, DATEADD ( LASTDATE ( 'Calendar'[EndOfWeek] ), - N0, DAY ),
        TF2, DATEADD ( LASTDATE ( 'Calendar'[EndOfMonth] ), - N0, DAY ),
        TF3, DATEADD ( LASTDATE ( 'Calendar'[EndOfQuarter] ), - N0, DAY ),
        TF4, DATEADD ( LASTDATE ( 'Calendar'[EndOfHalfYear] ), - N0, DAY ),
        TF5, DATEADD ( LASTDATE ( 'Calendar'[EndOfYear] ), - N0, DAY ),
        DATE_START0 //无筛选的时，默认日期表期初。
    )
VAR DATE_END2 =
    IF ( ISBLANK ( DATE_END1 ), DATE_START0, DATE_END1 ) //兼容 dateadd 后的空值，注意日期表的两个端点。
VAR DATE_TABLE0 =
    DATESBETWEEN ( 'Calendar'[dates], DATE_START0, DATE_END2 )
VAR IN0 =
    CALCULATE ( [02_Receipts], DATE_TABLE0 )
VAR OUT0 =
    CALCULATE ( [03_Forecast], DATE_TABLE0 )
RETURN
    IF ( [03_Forecast], IN0 - OUT0, BLANK () )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;02_Receipts = 
SUM ( 'Current Inventory'[Current Inventory] ) + SUM ( 'Receipts'[QTY] ) + 0&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;02_Receipts_Display = 
IF ( [03_Forecast], [02_Receipts], BLANK () )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;03_Forecast = 
SUM ( Forecast[QTY] )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;04_Ending Inventory = 
VAR DATE_START0 =
    CALCULATE ( FIRSTDATE ( 'Calendar'[dates] ), ALL ( 'Calendar' ) )
VAR DATE_END0 =
    LASTDATE ( 'Calendar'[dates] )
VAR DATE_TABLE0 =
    DATESBETWEEN ( 'Calendar'[dates], DATE_START0, DATE_END0 )
VAR IN0 =
    CALCULATE ( [02_Receipts], DATE_TABLE0 )
VAR OUT0 =
    CALCULATE ( [03_Forecast], DATE_TABLE0 )
RETURN
    IF ( [03_Forecast], IN0 - OUT0, BLANK () )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://app.powerbi.com/view?r=eyJrIjoiMmMzYzIxYWYtNGExYS00YzA2LTg5OGMtNjVhMzJlN2RhMWYwIiwidCI6IjM1MjA4ZDZiLWNlMjUtNDMxOC05MTdmLTE2YWU4ODZhNzc5YyIsImMiOjEwfQ%3D%3D" target="_blank" rel="noopener"&gt;pbi-url&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 May 2023 11:12:53 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3221917#M117779</guid>
      <dc:creator>jiaopengzi</dc:creator>
      <dc:date>2023-05-05T11:12:53Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3222028#M117788</link>
      <description>&lt;P&gt;thank you very much for sharing it.. but in your data example your forecast is always less than (Begining) + Receipts. Lets say your first Forecast is 114 instead of 14. Then the ending will be negative, how can we ensure we dont carry forward the negatives?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 May 2023 12:08:31 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3222028#M117788</guid>
      <dc:creator>Satya2804</dc:creator>
      <dc:date>2023-05-05T12:08:31Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3223148#M117922</link>
      <description>&lt;P&gt;this？&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;01_Beginning Inventory_Display = 
VAR DATE_START0 =
    CALCULATE ( FIRSTDATE ( 'Calendar'[dates] ), ALL ( 'Calendar' ) )
VAR DATE_END0 =
    LASTDATE ( 'Calendar'[dates] )
VAR TF0 =
    HASONEVALUE ( 'Calendar'[dates] ) //日
VAR TF1 =
    HASONEVALUE ( 'Calendar'[YearWeek] ) //周
VAR TF2 =
    HASONEVALUE ( 'Calendar'[YearMonth] ) //月
VAR TF3 =
    HASONEVALUE ( 'Calendar'[YearQuarter] ) //季度
VAR TF4 =
    HASONEVALUE ( 'Calendar'[YearHalf] ) //半年度
VAR TF5 =
    HASONEVALUE ( 'Calendar'[FY00] ) //年度
VAR N0 =
    SWITCH (
        TRUE (),
        TF0, 0,
        TF1,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfWeek] ),
                LASTDATE ( 'Calendar'[EndOfWeek] ),
                DAY
            ),
        TF2,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfMonth] ),
                LASTDATE ( 'Calendar'[EndOfMonth] ),
                DAY
            ),
        TF3,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfQuarter] ),
                LASTDATE ( 'Calendar'[EndOfQuarter] ),
                DAY
            ),
        TF4,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfHalfYear] ),
                LASTDATE ( 'Calendar'[EndOfHalfYear] ),
                DAY
            ),
        TF5,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfYear] ),
                LASTDATE ( 'Calendar'[EndOfYear] ),
                DAY
            ),
        0
    ) + 1
VAR DATE_END1 =
    SWITCH (
        TRUE (),
        TF0, DATEADD ( DATE_END0, - N0, DAY ),
        TF1, DATEADD ( LASTDATE ( 'Calendar'[EndOfWeek] ), - N0, DAY ),
        TF2, DATEADD ( LASTDATE ( 'Calendar'[EndOfMonth] ), - N0, DAY ),
        TF3, DATEADD ( LASTDATE ( 'Calendar'[EndOfQuarter] ), - N0, DAY ),
        TF4, DATEADD ( LASTDATE ( 'Calendar'[EndOfHalfYear] ), - N0, DAY ),
        TF5, DATEADD ( LASTDATE ( 'Calendar'[EndOfYear] ), - N0, DAY ),
        DATE_START0 //无筛选的时，默认日期表期初。
    )
VAR DATE_END2 =
    IF ( ISBLANK ( DATE_END1 ), DATE_START0, DATE_END1 ) //兼容 dateadd 后的空值，注意日期表的两个端点。
VAR DATE_TABLE0 =
    DATESBETWEEN ( 'Calendar'[dates], DATE_START0, DATE_END2 )
VAR _Begin =
    CALCULATE ( [04_Ending Inventory_Display], DATE_TABLE0 )
VAR IN0 =
    CALCULATE ( [02_Receipts], DATE_TABLE0 )
VAR OUT0 =
    CALCULATE ( [03_Forecast], DATE_TABLE0 )
RETURN
    IF ( [03_Forecast], COALESCE( _Begin,IN0-OUT0), BLANK () )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;04_Ending Inventory_Display = 
VAR ItemID_AC = SELECTEDVALUE('Items'[Item ID])
VAR DATE_AC = LASTDATE('Calendar'[Dates])
VAR T0 =
    FILTER (
        ADDCOLUMNS (
            CROSSJOIN ( ALL(  'Calendar'[Dates] ), ALL( 'Items'[Item ID] ) ),
            "@END0", 'Measure'[04_Ending Inventory]
        ),
        NOT ( ISBLANK ( [@END0] ) )
    )
VAR T1 =
    ADDCOLUMNS (
        T0,
        "@Index",
            COUNTROWS (
                WINDOW (
                    1,
                    ABS,
                    0,
                    REL,
                    T0,
                    ORDERBY ( 'Calendar'[Dates], ASC, Items[Item ID], ASC ),
                    PARTITIONBY ( Items[Item ID] )
                )
            )
    )
VAR T2 =
    ADDCOLUMNS (
        T1,
        "@Acc",
            VAR R = [@Index]
            VAR ItemID = [Item ID]
            VAR T = FILTER ( T1, [Item ID] = ItemID  &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR Acc = SUMX ( T, [@END0] )
            RETURN
                Acc
    )
VAR T3 =
    ADDCOLUMNS (
        T2,
        "@isAdd",
            VAR R = [@Index]
            VAR ItemID = [Item ID]
            VAR T = FILTER ( T2,   [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            RETURN
                MINX ( T, [@Acc] )
    )
VAR T4 =
    ADDCOLUMNS (
        T3,
        "@minIndex",
            VAR R = [@Index]
            VAR ItemID = [Item ID]
            VAR T = FILTER ( T3, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR MIN0 = MINX ( T, [@Acc] )
            VAR TT = FILTER ( T, [@isAdd] = MIN0 )
            VAR I = MINX ( TT, [@Index] )
            RETURN
                I,
        "@Diff",
            VAR R = [@Index]
            VAR ItemID = [Item ID]
            VAR T = FILTER ( T3, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR MIN0 = MINX ( T, [@Acc] )
            VAR TT = FILTER ( T, [@isAdd] = MIN0 )
            VAR I = MINX ( TT, [@Index] )
            VAR DIFF = SUMX ( FILTER ( T, [@Index] = I ), [@END0] )
            RETURN
                DIFF
    )
VAR T5 =
    ADDCOLUMNS (
        T4,
        "@END1",
            VAR R = [@Index]
            VAR ItemID = [Item ID]
            VAR T = FILTER ( T4, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR X =
                SWITCH (
                    TRUE (),
                    R &amp;gt;= [@minIndex] &amp;amp;&amp;amp; [@Diff] &amp;lt; 0, [@END0] - [@Diff],
                    R &amp;lt; [@minIndex] &amp;amp;&amp;amp; [@Diff] &amp;lt; 0, 0,
                    [@END0]
                )
            RETURN
                X
    )
VAR T6 = FILTER ( T5, [Dates] = DATE_AC &amp;amp;&amp;amp; [Item ID] = ItemID_AC )
VAR RESULT = SUMX ( T6, [@END1] )
RETURN
    RESULT&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 06 May 2023 09:38:25 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3223148#M117922</guid>
      <dc:creator>jiaopengzi</dc:creator>
      <dc:date>2023-05-06T09:38:25Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3223189#M117925</link>
      <description>&lt;P&gt;Thanks a ton.. will try it out in my dataset&lt;/P&gt;</description>
      <pubDate>Sat, 06 May 2023 11:55:32 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3223189#M117925</guid>
      <dc:creator>Satya2804</dc:creator>
      <dc:date>2023-05-06T11:55:32Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3224848#M118065</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="206084" data-lia-user-login="jiaopengzi" class="lia-mention lia-mention-user"&gt;jiaopengzi&lt;/a&gt;&amp;nbsp;.. it was working like a charm but noticed the index restarts everytime the 04 Ending inventory is 0 right? In sample below, for Aug'23, previous ending inventory plus receipts (2642 + 2206) is greater than forecast (4556) so we expect a positive ending inventory display but the measure gives 0. Any magical fixes you would suggest?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Month&lt;/TD&gt;&lt;TD&gt;Product&lt;/TD&gt;&lt;TD&gt;Forecast&lt;/TD&gt;&lt;TD&gt;Receipts&lt;/TD&gt;&lt;TD&gt;04_Ending Inventory&lt;/TD&gt;&lt;TD&gt;04_Ending Inventory_Display&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01-05-2023&lt;/TD&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;5278&lt;/TD&gt;&lt;TD&gt;3009&lt;/TD&gt;&lt;TD&gt;-2269&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01-06-2023&lt;/TD&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4686&lt;/TD&gt;&lt;TD&gt;7202&lt;/TD&gt;&lt;TD&gt;247&lt;/TD&gt;&lt;TD&gt;2515&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01-07-2023&lt;/TD&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;3708&lt;/TD&gt;&lt;TD&gt;3835&lt;/TD&gt;&lt;TD&gt;373&lt;/TD&gt;&lt;TD&gt;2642&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#FF6600"&gt;01-08-2023&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF6600"&gt;AB&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF6600"&gt;4556&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF6600"&gt;2206&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF6600"&gt;-1977&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF6600"&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01-09-2023&lt;/TD&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;4083&lt;/TD&gt;&lt;TD&gt;6177&lt;/TD&gt;&lt;TD&gt;118&lt;/TD&gt;&lt;TD&gt;2094&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01-10-2023&lt;/TD&gt;&lt;TD&gt;AB&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1051&lt;/TD&gt;&lt;TD&gt;1169&lt;/TD&gt;&lt;TD&gt;3145&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 08 May 2023 11:49:23 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3224848#M118065</guid>
      <dc:creator>Satya2804</dc:creator>
      <dc:date>2023-05-08T11:49:23Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3225972#M118142</link>
      <description>&lt;P&gt;Just add some judgment logic, hope to help you.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;04_Ending Inventory_Display = 
VAR ItemID_AC = SELECTEDVALUE('Items'[Item ID])
VAR DATE_AC = LASTDATE('Calendar'[Dates])
VAR T0 =
    FILTER (
        ADDCOLUMNS (
            CROSSJOIN ( ALL(  'Calendar'[Dates] ), ALL( 'Items'[Item ID] ) ),
            "@IN",[02_Receipts_Display],
            "@OUT",[03_Forecast],
            "@END0", [04_Ending Inventory]
        ),
        NOT ( ISBLANK ( [@END0] ) )
    )
VAR T1 =
    ADDCOLUMNS (
        T0,
        "@Index",
            COUNTROWS (
                WINDOW (
                    1,
                    ABS,
                    0,
                    REL,
                    T0,
                    ORDERBY ( 'Calendar'[Dates], ASC, Items[Item ID], ASC ),
                    PARTITIONBY ( Items[Item ID] )
                )
            )
    )
VAR T2 =
    ADDCOLUMNS (
        T1,
        "@Acc",
            VAR R = [@Index]
            VAR ItemID = [Item ID]
            VAR T = FILTER ( T1, [Item ID] = ItemID  &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR Acc = SUMX ( T, [@END0] )
            RETURN
                Acc
    )
VAR T3 =
    ADDCOLUMNS (
        T2,
        "@isAdd",
            VAR R = [@Index]
            VAR ItemID = [Item ID]
            VAR T = FILTER ( T2,   [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            RETURN
                MINX ( T, [@Acc] )
    )
VAR T4 =
    ADDCOLUMNS (
        T3,
        "@minIndex",
            VAR R = [@Index]
            VAR ItemID = [Item ID]
            VAR T = FILTER ( T3, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR MIN0 = MINX ( T, [@Acc] )
            VAR TT = FILTER ( T, [@isAdd] = MIN0 )
            VAR I = MINX ( TT, [@Index] )
            RETURN
                I,
        "@Diff",
            VAR R = [@Index]
            VAR ItemID = [Item ID]
            VAR T = FILTER ( T3, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR MIN0 = MINX ( T, [@Acc] )
            VAR TT = FILTER ( T, [@isAdd] = MIN0 )
            VAR I = MINX ( TT, [@Index] )
            VAR DIFF = SUMX ( FILTER ( T, [@Index] = I ), [@END0] )
            RETURN
                DIFF
    )
VAR T5 =
    ADDCOLUMNS (
        T4,
        "@END1",
            VAR R = [@Index] - 1
            VAR ItemID = [Item ID] 
            VAR T = FILTER ( T4, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] = R )
            VAR END0_Previous = SUMX ( T, [@END0] ) 
            VAR X =
                SWITCH (
                    TRUE (),
                    [@END0] &amp;lt; 0 &amp;amp;&amp;amp; [@IN] - [@OUT] &amp;gt; 0, [@IN] - [@OUT],
                    R &amp;gt;= [@minIndex] &amp;amp;&amp;amp; [@Diff] &amp;lt; 0, [@END0] - [@Diff],
                    R &amp;lt; [@minIndex] &amp;amp;&amp;amp; [@Diff] &amp;lt; 0, 0,
                    END0_Previous &amp;lt; 0, [@END0] - END0_Previous,
                    [@END0]
                )
            RETURN
                X
    )
VAR T6 =
    ADDCOLUMNS (
        T5,
        "@BEGIN1",
            VAR R = [@Index] - 1
            VAR ItemID = [Item ID] 
            VAR T = FILTER ( T5, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] = R )
            VAR END1_Previous = SUMX ( T, [@END1] )
            VAR BEGIN1 = IF ( END1_Previous &amp;lt; 0 || END1_Previous = BLANK(), 0, END1_Previous )
            RETURN
                BEGIN1
    )
VAR T7 =
    ADDCOLUMNS (
        T6,
        "@END2",
        SWITCH (
            TRUE (),
            [@BEGIN1] + [@IN] - [@OUT] &amp;gt; 0, [@BEGIN1] + [@IN] - [@OUT],
            [@END0]&amp;lt;0 &amp;amp;&amp;amp; [@BEGIN1] + [@IN] - [@OUT] &amp;lt;= 0, 0,
            [@END0]
        )

    )
VAR T8 = FILTER ( T7, [Dates] = DATE_AC &amp;amp;&amp;amp; [Item ID] = ItemID_AC )
VAR RESULT = SUMX ( T8, [@END2] )
RETURN
    RESULT&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;01_Beginning Inventory_Display = 
VAR DATE_START0 =
    CALCULATE ( FIRSTDATE ( 'Calendar'[dates] ), ALL ( 'Calendar' ) )
VAR DATE_END0 =
    LASTDATE ( 'Calendar'[dates] )
VAR TF0 =
    HASONEVALUE ( 'Calendar'[dates] ) //日
VAR TF1 =
    HASONEVALUE ( 'Calendar'[YearWeek] ) //周
VAR TF2 =
    HASONEVALUE ( 'Calendar'[YearMonth] ) //月
VAR TF3 =
    HASONEVALUE ( 'Calendar'[YearQuarter] ) //季度
VAR TF4 =
    HASONEVALUE ( 'Calendar'[YearHalf] ) //半年度
VAR TF5 =
    HASONEVALUE ( 'Calendar'[FY00] ) //年度
VAR N0 =
    SWITCH (
        TRUE (),
        TF0, 0,
        TF1,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfWeek] ),
                LASTDATE ( 'Calendar'[EndOfWeek] ),
                DAY
            ),
        TF2,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfMonth] ),
                LASTDATE ( 'Calendar'[EndOfMonth] ),
                DAY
            ),
        TF3,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfQuarter] ),
                LASTDATE ( 'Calendar'[EndOfQuarter] ),
                DAY
            ),
        TF4,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfHalfYear] ),
                LASTDATE ( 'Calendar'[EndOfHalfYear] ),
                DAY
            ),
        TF5,
            DATEDIFF (
                FIRSTDATE ( 'Calendar'[StartOfYear] ),
                LASTDATE ( 'Calendar'[EndOfYear] ),
                DAY
            ),
        0
    ) + 1
VAR DATE_END1 =
    SWITCH (
        TRUE (),
        TF0, DATEADD ( DATE_END0, - N0, DAY ),
        TF1, DATEADD ( LASTDATE ( 'Calendar'[EndOfWeek] ), - N0, DAY ),
        TF2, DATEADD ( LASTDATE ( 'Calendar'[EndOfMonth] ), - N0, DAY ),
        TF3, DATEADD ( LASTDATE ( 'Calendar'[EndOfQuarter] ), - N0, DAY ),
        TF4, DATEADD ( LASTDATE ( 'Calendar'[EndOfHalfYear] ), - N0, DAY ),
        TF5, DATEADD ( LASTDATE ( 'Calendar'[EndOfYear] ), - N0, DAY ),
        DATE_START0 //无筛选的时，默认日期表期初。
    )
VAR DATE_END2 =
    IF ( ISBLANK ( DATE_END1 ), DATE_START0, DATE_END1 ) //兼容 dateadd 后的空值，注意日期表的两个端点。
VAR DATE_TABLE0 =
    DATESBETWEEN ( 'Calendar'[dates], DATE_START0, DATE_END2 )
VAR _Begin =
    CALCULATE ( [04_Ending Inventory_Display], DATE_TABLE0 )
VAR IN0 =
    CALCULATE ( [02_Receipts], DATE_TABLE0 )
VAR OUT0 =
    CALCULATE ( [03_Forecast], DATE_TABLE0 )
RETURN
    IF ( [03_Forecast], COALESCE( _Begin,IN0-OUT0), BLANK () )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 May 2023 02:17:08 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3225972#M118142</guid>
      <dc:creator>jiaopengzi</dc:creator>
      <dc:date>2023-05-09T02:17:08Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3226885#M118216</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="206084" data-lia-user-login="jiaopengzi" class="lia-mention lia-mention-user"&gt;jiaopengzi&lt;/a&gt;&amp;nbsp;.. it is one step closer.. but for September it is not carrying forward the August ending on hand. it should be (293+6617)-4803 but it is calculating 6617-4803 = 1814.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Am trying to replicate your logic in excel to understand it better but am struggling to recreate it after Acc.. Do you mind sharing a table as to what are intended values for&amp;nbsp;Index, Acc, isadd, minIndex, Diff, End1 you are using in your measure logic for my sample data?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 May 2023 11:49:02 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3226885#M118216</guid>
      <dc:creator>Satya2804</dc:creator>
      <dc:date>2023-05-09T11:49:02Z</dc:date>
    </item>
    <item>
      <title>Re: Avoiding Circular Discrepancies for Col A = Col B (last row) and Col B = Col A (current row)?</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3227476#M118247</link>
      <description>&lt;P&gt;It's me who overcomplicated your question. The conventional invoicing idea should not be used, and the conventional invoicing should not have negative numbers.&lt;BR /&gt;Then change the way of thinking and solve the problem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;01_Beginning Inventory_Display = 
VAR ItemID_AC = SELECTEDVALUE('Items'[Item ID])
VAR DATE_AC = LASTDATE('Calendar'[Dates])
VAR T0 =
    FILTER (
        ADDCOLUMNS (
            CROSSJOIN ( ALL(  'Calendar'[Dates] ), ALL( 'Items'[Item ID] ) ),
            "@IN",[02_Receipts_Display],
            "@OUT",[03_Forecast],
            "@END0", [02_Receipts_Display] - [03_Forecast]
        ),
        NOT ( ISBLANK ( [@END0] ) )
    )
    
    
VAR T1 =
    ADDCOLUMNS (
        T0,
        "@Index",
            COUNTROWS (
                WINDOW (
                    1,
                    ABS,
                    0,
                    REL,
                    T0,
                    ORDERBY ( 'Calendar'[Dates], ASC, Items[Item ID], ASC ),
                    PARTITIONBY ( Items[Item ID] )
                )
            )
    )
VAR T2 =
    ADDCOLUMNS (
        T1,
        "@Acc",
            VAR R = [@Index]
            VAR ItemID = [Item ID] 
            VAR T = FILTER ( T1, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR Acc = SUMX ( T, [@END0] )
            RETURN
                Acc
    )

VAR T3 =
    ADDCOLUMNS (
        T2,
        "@END1",
            VAR R = [@Index]
            VAR ItemID = [Item ID] 
            VAR T = FILTER ( T2, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR minOfSum = MIN ( 0, MINX ( T, [@acc] ) )
            RETURN
                [@acc] - minOfSum

    )

VAR T4 =
    ADDCOLUMNS (
        T3,
        "@BEGIN1",
            VAR R = [@Index]
            VAR ItemID = [Item ID] 
            VAR T = FILTER ( T3, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] = R - 1)
            VAR END1_Previous = SUMX ( T, [@END1] )
            VAR BEGIN1 = IF ( END1_Previous &amp;lt; 0 || END1_Previous = BLANK(), 0, END1_Previous )
            RETURN
                BEGIN1
    )
VAR T5 =
    ADDCOLUMNS (
        T4,
        "@END2",
        IF([@BEGIN1] + [@IN] - [@OUT] &amp;gt; 0, [@BEGIN1] + [@IN] - [@OUT],0)
    )
VAR T6 = FILTER ( T5, [Dates] = DATE_AC &amp;amp;&amp;amp; [Item ID] = ItemID_AC )
VAR RESULT = SUMX ( T6, [@BEGIN1] )
RETURN
    RESULT&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;04_Ending Inventory_Display = 
VAR ItemID_AC = SELECTEDVALUE('Items'[Item ID])
VAR DATE_AC = LASTDATE('Calendar'[Dates])
VAR T0 =
    FILTER (
        ADDCOLUMNS (
            CROSSJOIN ( ALL(  'Calendar'[Dates] ), ALL( 'Items'[Item ID] ) ),
            "@IN",[02_Receipts_Display],
            "@OUT",[03_Forecast],
            "@END0", [02_Receipts_Display] - [03_Forecast]
        ),
        NOT ( ISBLANK ( [@END0] ) )
    )
    
    
VAR T1 =
    ADDCOLUMNS (
        T0,
        "@Index",
            COUNTROWS (
                WINDOW (
                    1,
                    ABS,
                    0,
                    REL,
                    T0,
                    ORDERBY ( 'Calendar'[Dates], ASC, Items[Item ID], ASC ),
                    PARTITIONBY ( Items[Item ID] )
                )
            )
    )
VAR T2 =
    ADDCOLUMNS (
        T1,
        "@Acc",
            VAR R = [@Index]
            VAR ItemID = [Item ID] 
            VAR T = FILTER ( T1, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR Acc = SUMX ( T, [@END0] )
            RETURN
                Acc
    )

VAR T3 =
    ADDCOLUMNS (
        T2,
        "@END1",
            VAR R = [@Index]
            VAR ItemID = [Item ID] 
            VAR T = FILTER ( T2, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] &amp;lt;= R )
            VAR minOfSum = MIN ( 0, MINX ( T, [@acc] ) )
            RETURN
                [@acc] - minOfSum

    )

VAR T4 =
    ADDCOLUMNS (
        T3,
        "@BEGIN1",
            VAR R = [@Index]
            VAR ItemID = [Item ID] 
            VAR T = FILTER ( T3, [Item ID] = ItemID &amp;amp;&amp;amp; [@Index] = R - 1)
            VAR END1_Previous = SUMX ( T, [@END1] )
            VAR BEGIN1 = IF ( END1_Previous &amp;lt; 0 || END1_Previous = BLANK(), 0, END1_Previous )
            RETURN
                BEGIN1
    )
VAR T5 =
    ADDCOLUMNS (
        T4,
        "@END2",
        IF([@BEGIN1] + [@IN] - [@OUT] &amp;gt; 0, [@BEGIN1] + [@IN] - [@OUT],0)
    )
VAR T6 = FILTER ( T5, [Dates] = DATE_AC &amp;amp;&amp;amp; [Item ID] = ItemID_AC )
VAR RESULT = SUMX ( T6, [@END2] )
RETURN
    RESULT&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 May 2023 15:51:13 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Avoiding-Circular-Discrepancies-for-Col-A-Col-B-last-row-and-Col/m-p/3227476#M118247</guid>
      <dc:creator>jiaopengzi</dc:creator>
      <dc:date>2023-05-09T15:51:13Z</dc:date>
    </item>
  </channel>
</rss>

