🤔 "Rollover Adjustment" in the new Savings Budget


The Tiller Money Labs team recently shared the Savings Budget, a new template that supports the envelope budgeting method. The Savings Budget is a great tool for users wanting to track savings. (Video demo.)

In some ways, the Savings Budget builds on the Envelope Budget (via the Tiller Add-on) but with several advantages:

  • Improved compatibility with the Foundation template and Tiller Money’s tools and workflows
  • Improved performance
  • Calculations performed by transparent, in-cell calculations (fewer scripts required)

How Rollover Adjustment Works

The Envelope Budget introduced a concept called Rollover Adjustment to compensate for ways that category savings totals could diverge from real world account balances— i.e. the problem of creating imaginary savings:

  1. Uncategorized transactions
    Uncategorized transactions represent expenses that are invisible to category budgets.
  2. Total transfers don’t net to $0
    Non-zero net transfers are also expenses that are invisible to category budgets.
  3. Categories that are not set as Savings categories
    Untracked categories allow period-to-period (un)favorabilities to vanish rather than accruing.
  4. Income budget is not equal to your expense budget
    Unbalanced cashflow budgets create unfunded savings. For example, if I budget for $2,000 of expenses and $1,000 of income and have $1,000 of actual income and expenses, I will have zero net cashflow, but would accrue $1,000 of imaginary category savings.

The concept was not well explained but the intention was, given any and all of the above circumstances, to represent an accurate offset that trued total category savings to one’s funded reality.

Opportunities for Improvement

More Intuitive

The Rollover Adjustment is the most misunderstood and confusing aspect of the Envelope Budget. We’d like to rework the concept in a way that makes the concept more immediately helpful to new users. (Among other things, this likely includes renaming it.)

Update for Savings Budget

One critical difference between the Envelope Budget and the new Savings Budget is that Savings Budget allows users to track savings in all, none or some of their categories, complicating the Rollover Adjustment calculation.


General Feedback

If you are a user of the Envelope Budget (via the Tiller Add-on) , let us know:

  • Does the Rollover Adjustment make sense to you?
  • Do you find the Rollover Adjustment calculation useful?
  • How do you use the Rollover Adjustment calculation?
  • What would make Rollover Adjustment more helpful?
  • What would make Rollover Adjustment more intuitive?
  • Would a less comprehensive (and complicated) version of this calculation suffice?
  • What would you call it if you could rename it something more intuitive?

If you are not a user of the Envelope Budget (via the Tiller Add-on) , let us know:

  • Does your workflow require or benefit from a compensation like the Rollover Adjustment?
  • How do you currently make sure your envelopes/rollover categories are properly funded?

Detailed Feedback

  • How should Rollover Adjustment be calculated when not all categories track savings (i.e. what is the math)?
  • Should Rollover Adjustment be integrated into the Savings Budget dashboard (as a pseudo budget category similar to its integration into the Envelope Budget) so that (un)favorability can be tapped and managed through savings adjustments?
  • Should unbalanced savings adjustments be captured in Rollover Adjustment? For example, if I adjust +$1,000 of savings into a Travel category, should the Rollover Adjustment decrease by $1,000 since there is no(t yet) offsetting savings adjustment indicating where this money came from? (One challenge with implementing corrections for savings adjustments is that sometimes they make sense— unfunded adjustment— and other times they do not— truing up a budgets starting value based on pre-migration savings.)
  • What critical components of Rollover Adjustment concept should we also be considering to keep budgets honest?
  • Should the staged adjustments (not yet written with the Update Budget workflow) be included in the Rollover Adjustment calculation?


The Savings Budget already has preliminary rollover-adjustment calculations built in.

Unhide the columns on the right side of the template and check the Show Rollover Adjustment box in J3 to reveal this calculation in the template header.


I agree that “Rollover Adjustment” is a confusing term. I think one problem with it is that it conflates many different problems/errors into a single number. In doing that, the user has to go hunt down exactly why the adjustment is not zero. Worse, independent errors could conspire to make the adjustment zero even if there are problems with the data.

I treat both Uncategorized transactions and Total transfers don’t net to $0 as data errors in the Transaction sheet. I try to fix them even without considering budgeting, and I don’t really trust any reports until I do. I’d be happy if these were treated by the foundation templates as more fundamental data errors.

That leaves Categories that are not set as Savings categories and
Income budget is not equal to your expense budget. Whether or not these are “errors” are almost a matter of intent and taste.

How about creating a new, implied, envelope to hold available spending money. Call it “Available”. It never appears in the Transactions sheet. Instead, it is computed from the running account balances in cash flow accounts minus the sum of all savings tracked in the Savings Budget.

Phantom savings shows as a negative “Available” bucket, and is always an error. I.e. you’ve “saved” more than you actually have.

Unallocated, but available, cash shows as a positive “Available” bucket. All spending from non “savings” categories removes from this bucket. All income adds to this bucket.

A strict Zero Based Budget keeps “Available” at zero. This is where “give every dollar a job” concepts come in to play. I.e. fund your buckets immediately. But with this system, failing to do this is not really an “error” but a warning that you need to fix your budget or do some manual adjustments.

A more casual “Savings Goal” approach expects “Available” to be positive and large enough to cover all near term expenses not covered by the savings goals. The user might create a few key categories for longer term savings, but all other spending comes out of the “Available” slush fund.

To make Available work, I think the Savings Budget needs to know starting account balances, which is currently missing in Tiller since the Transactions and Balance History sheets are not perfectly synchronized. Maybe the Savings Budget needs to be configured, and could suggest values based on Balance History?

Well, that is the end of my ideas. Maybe they’re useful? :slight_smile:


The way this is most useful to me is to flag an error. If I have a non-zero adjustment, then I effed something up.

Probably! I think situations #1 and #2 should be treated as data errors in the budget. If you have uncategorized transactions and your transfers don’t equal zero, there should be warnings to correct them and that should be the end of it. It’s reasonable to expect people to keep their data clean. I could be wrong but I also feel like people that would be typically drawn to a solution like Tiller are more apt to do so.

I think #4 should also be considered an error, but I probably don’t have a full understanding of the ways different people handle their flow and there may be legitimate reasons why they aren’t balanced. But that being said, (I think) this is a zero-based budgeting system so intuitively income and expenses should come out to zero.

Something like “unbudgeted (or allocated) funds” or “overbudgeted (or allocated) funds.” The second one is clumsy but that’s the track my mind is on, largely based on simplifying to only really considering situation #3. Something to say “Hey, you budgeted this dough last month but didn’t spend it.”

Maybe I’m missing something obvious but shouldn’t it be as simple as Budget - Actual = Savings (or rollover)? (Again, with the above assumptions)

I used to do something like this in a group called “Buffer” that had two categories in it. Over time I tried a 3 ways of adjusting funds in and out of the buffer to other categories: 1) +/- Savings (not always available, low trackability - would be better with the Budget Journal) 2) +/- Budget (low trackability, makes setting up next month’s budget more difficult) 3) Manual transactions (transfers) that moved from one to the other (great trackability, pita to do)

Eventually, I transitioned to moving this “buffer” to my income rollover. I talked about that some in Envelope Budget (add-on): setup best practices/basics?

Instinct says yes, but the “truing up” issue you mention is an interesting point. For me personally, when I found I needed to do that I went back to the beginning and fixed it there. It seems to me that fixing the error where it occurred should be a best practice and would avoid problems with this. That $1000 in your Travel category came from somewhere… it was either there at the start of your Tiller history or there’s a matching transaction (be it income, transfer, whatever). In either event, the proper way to account for it should be at the source of the error.

No, but maybe a warning indicating that the current adjustments aren’t balanced would be useful. Either on the dashboard and/or when the update function is initiated. I’m wavering on this. On the one hand if the calculation is complex and represents a lot of different things, having it instantly update on unwritten adjustments may cause excess confusion. But having some sort of easy, live-updating calculation of your income/expense balance is useful.

1 Like

5 posts were split to a new topic: Migrating from Envelope Budget to Savings Budget

Thanks again for all the feedback, @aronos & @matta. You have provided food for thought and have helped clarify my thinking.

I agree that we should track discrete contributors to budget errors. We can still roll them up into a total compensation factor, but they should be discretely visible as component parts.

I built up a worksheet where we can game out various budget errors and see if they are compensated for properly. If you want to make a copy and play with it, it is available here.

There are six sheets in the spreadsheet each testing out a potential problem scenario:

  • Scenario 1: balanced budget with no uncategorized transactions + balanced transfers. I think this one is pretty straightforward… Expected February result is slightly unfavorable savings due to net negative actuals should yield unfavorable Savings, but no Rollover Adjustment.
  • Scenario 2: Not-balanced budget with no uncategorized transactions. Expected February result is artificial savings due to imbalanced budget ($200/period) should be corrected by Rollover Adjustment on same scale.
  • Scenario 3: Balanced Budget with uncategorized transaction(s). Expected February result compensates via Rollover Adjustment for uncategorized transaction(s).
  • Scenario 4: Balanced budget with no uncategorized transactions and balanced transfers. Expected February result: slightly unfavorable savings due to net negative actuals.
  • Scenario 5: Balanced budget with no uncategorized transactions and unbalanced transfers. Expected February Result: transfer unfavorability makes Available lower (less funds to fill envelopes).
  • Scenario 6: Balanced budget but not all categories configured for Savings rollovers. Expected February result: Rollover Adjustment must compensate for vanishing Groceries rollover in Feb period.

Did I miss any scenarios we should be accounting for?

Scenario 6 is the biggest headscratcher for me :thinking:. Because Groceries isn’t tracked as “Savings”, this Available amount vanishes in the subsequent period. It is confusing but I believe this means that the true budget is inaccurately deflated in the subsequent period— i.e. the user’s total Savings is -$45 but should really be -$35.

Overall, I think we land at a formula that looks something like this:
Rollover Adjustment = Net Budget - Net Actuals (only categories with Savings enabled) + Net Actuals (all categories)

This formula :point_up: seems to work for uncategorized transactions, partially tracked Savings, and unbalanced Transfers.

Really curious to hear what you think— would :heart: any additional feedback you have.
Thanks in advance,

P.S. With this tool & workflow, I’d like to stay away from leverages account balances, @matta. There are timing and category-to-account linking issues that are fussy there. That said, the new Savings & Debt template (that @heather & I demoed in a webinar today) does allow you to assign accounts to categories and confirm that there is enough money available to fund listed virtual savings categories.

I can’t think of any more offhand, it hurts my brain a little though. I think one thing to be explicit about, and you captured it in #2, is that it’s just as important to have Savings setup for income as it is for expenses.

This is the biggest problem from what I can see. And it goes both ways, positive and negative, of course. When I was doing my “retcon” today I found two months which had errors that I have no idea about. The recent one was easy enough to fix because I knew how I did it (retroactively creating a category and manually setting the budget for it without deducting from the budget I split it from). The other one I haven’t looked closely at yet but I suspect it’s going to require a “strong-arm” fix from savings since tracking down the real error may be excessively difficult or impossible. But the real problem here is that these errors, as you put it, vanished the next month.

  • What is the case for having the Savings be an option anyway? This is, after all, the Savings Budget…
  • Is it too late to change the name of this? :smiley:

One thought… when naming these things I think phrases like “Savings Adjustment” or “Rollover Adjustment” are too… friendly. Maybe it’s my own bias in that any of these scenarios are problems, but something like “Error Adjustment” or something that actually makes you think, hey, something is wrong, might be better.

Is it possible to adapt this test sheet concept into an addon that will evaluate your real past budgets? Maybe just solving this would eliminate any use for that…

Thanks for diving in, @aronos.

The partial savings are definitely not intuitive.
There are basically 3 categories of transactions that need to be handled differently to keep a budget true:

  • Budgeted transactions with rollovers turned on
  • Budgeted transactions with rollovers turned off
  • Unbudgeted transactions (e.g. transfers, uncategorized or no-longer-used categories)

I THINK the equation I shared above handles all three cases but I’m happy to make improvements if anyone has suggestions.

You ask why I made the Savings setting optional, @aronos? I guess just because I can imagine users who are comfortable using the Monthly Budget but want to have one or two of their categories accrue as long term goals. For the most part, having the Savings be optional doesn’t introduce complications… except for the riddle of truing up budget issues.

You ask “is it too late to change the name of this?”… do you mean the template or the Track category?

We picked the term Savings Budget for the template because we wanted something a little more general and less jargony that “envelope” or “rollover”.

I’m open to “Error Adjustment”. When I use “Rollover Adjustment” it is simply as a placeholder for something better. :wink:

As for the test sheet, once we settle on the analysis and inputs, I’ll add the equations to the Savings Budget master and we can see how they work in practice. We can continue to adjust and refine until we are happy with them.

1 Like

Okay I guess that makes sense… I’ve never done any sort of budgeting aside from envelope so it seems weird to me.

Yes, I meant the template. Same bias as above. :slight_smile:

As far as I can tell that’s correct, and I couldn’t find a way to break your demo sheet, especially with the separated “Available” and “Rollover Adjustment” calculations. But I think you’ve advanced this past the point where I can provide much useful input or insight and only have more questions.

I just set this up, and want to say kudos to the Tiller team. I absolutely love it - such a simple and intuitive addition. And now I can easily track things like our travel expenses which are extremely lumpy in nature. Great job!


Really glad to hear it, @jpkica. Thanks for sharing.

Hi @randy,

Your 6 point classification looks reasonable to me, though I can’t claim to have thought about the problem deeply. :wink:

However, my primary concern for the Savings Budget sheet continues to be the manual management of savings amounts themselves.

Case in point: I discovered last week that my total savings was about $300 too high due to what was probably human error on my part when setting their initial values.

I can also easily introduce errors when “transferring” savings amounts across categories, yet the sheet doesn’t (currently, by default) warn me about the mistake.

So, as they stand today, the savings amounts in the Savings Budget are too error prone for my taste. I think what is missing is a concept of an “opening savings balance,” and some way to pick a reasonable value for it based on real account balances. Maybe? With that, and good error checking heuristics for the running balances (no “leaky” savings transfers), I think I could trust the sheet.

Thanks again for the feedback, @aronos & @matta.

I just published a new version of the Savings Budget that includes an offset/“Budget Health”/“Rollover Adjustment” calculation per this calculation. It’s hidden to the right of the main content body— just make columns I and J visible.

I’m hoping this health check will address some of the questions you raised, @matta.

Let me know what you think.

1 Like

Looking forward to trying it out, @randy.

I tried to upgrade, but it looks like there is an issue with the publishing. I currently have v0.68 installed and can see v0.69 in the version history, but the Tiller Money Labs add-on isn’t flagging the solution for upgrading.
I was able to restore sheet instead to pull down the new version, but my add-on still says my installed version is v0.68.

Good catch, @cculber2. I found an issue with how I updated the version information. It is fixed now but may take 10’ for the cache to update.

Chances are you have the 0.69 version— just check for columns I & J— but that it is mis-versioned as 0.68.

Yes, that’s exactly what happened. :slight_smile: Thanks for the quick turnaround!

What exactly do these numbers mean? My “Offset, All Periods” matches that error from earlier in the year that I haven’t hunted down yet, but then my “Offset, Oct 2020” is “-15396.84” which seems wildly inaccurate since I’m balanced.

Also, the “Savings” calculations in my Income and Expense bars (the dark grey ones) are both off now. The expenses one is wildly off, coming in at over 3.4x the sum of all the light grey bars. I think it might be including hidden categories?

I also haven’t been able to get the prior column working in this version.

Hey @randy,

I think there is something off with the background calculations for Offset, <period>. I duplicated my budget journal categories sheets and cleared the journal and budget entries to get a fresh start. All transactions are still categorized and all income and expenses have a budget entry and net $0. My Net Actuals, All is correct, but the Net Actuals, Savings is yielding unusual results. Looking at the Integrated Categories columns, it appears you are calculating the Period Actuals and Total Actuals differently because of how Period Actuals supports the main income and expense report. Period Actuals is negating non-income transactions, which works for the main report, but breaks the current period Net Actuals, Savings and Offset, <period> results. The All Periods calculations don’t suffer from this problem because the Total Actuals don’t do any negation to display only positive numbers. I was able to overcome this problem by emulating the sumproduct() calculation for Net Budgets in to the below formula in J15.


I think this might address some of your issues, @aronos.

@cculber2 Yes, that fixed the “Offset, Oct 2020” issue.

I see now that those calculations in J8, J9, J14 & J15 are including hidden categories, which is why that number was so far off. Which I think is fine because they’re balancing out in the “offset.”

There also seems to be an issue with the Budget Health header formatting.


=if(J2<>0,"🤒 ","🤗. ")&"Budget Health"&if(J2<>0," 🤒"," 🤗")

J2 is clearly 0, but something is preventing the formula from properly formatting the header. Manually setting J2 to 0 gives the correct behavior, so I believe there is some hidden rounding error.

I changed the formula for the header to the following

=if(ROUND(J2,2)<>0,"🤒 ","🤗. ")&"Budget Health"&if(ROUND(J2,2)<>0," 🤒"," 🤗")

And the formula for the conditional formatting of the cell to


and that seems to fix the issue.

1 Like