This page lays out where the two documents differ, line by line, with the page number in the city's own reports and the calculation for every figure. Then it says what I'd ask for, at public comment now and from the D1 seat if you send me there.
Each of these tradeoffs draws on the same thing: one General Fund, about $275 million a year in revenue.
The city's year-end reports explain underspending in general government, streets and community development as "salary savings". They explain public safety overspending as "staffing shortages forcing mandatory overtime." To balance FY2026 the city is "holding 44.4 vacant positions unfunded." Unfilled positions save money in one department and cost overtime in another. The reports give each total but never set the savings against the overtime.
The ACFR states the rule: "Any unused funds are re-appropriated to the following fiscal year until the project is completed." That lets a delayed project keep its money. It also means the adopted budget leaves out a growing pool of earlier money: unspent and uncommitted appropriations carried forward went from $41.2 million into FY2023 to $130.5 million into FY2025. The reports give the totals. No list of projects is attached.
The General Fund covers other funds' negative cash balances, which the ACFR describes as "pending grant reimbursements or other receivables" and "expected to be repaid within the next fiscal year." The same sentence appears in FY2024 and FY2025, while the Grant Fund balance went from $11.7 million to $12.99 million to $13.1 million. A planned rate increase for the building-management fund is "on hold due to various competing factors and financial outlook," again in identical words both years.
The check. The record that would settle this already exists. It is the General Fund budget-to-actual schedule in each ACFR, and it arrives about six months after the year closes. The city's written explanations of the variances repeat word for word from one year to the next. The city has named these tradeoffs in its own reports and set none of them against each other, which is what the asks below fix.
This is the same pair the build list applies to every item. On spending, the check is "what we funded last cycle set next to what actually got finished." This page is that check, run on the General Fund.
A budget is a forecast. Forecasts miss, and a miss is information. Berkeley already produces the record of every miss. It sits in a report of more than 300 pages, published about six months after the year closes. I'd make that record part of the budget vote, so the next forecast starts from what actually happened.
Three years, by department, original budget, final budget and actual, with a written reason for every line more than 5% off its adopted figure. Publish it with the proposed budget. The city already prepares the numbers.
Use the three-year actual as the starting figure. Report overtime monthly by department, with the vacancies it covered and mutual-aid costs billed and reimbursed. I found no published figure for mutual-aid reimbursement in the reports I reviewed.
Every unspent appropriation carried forward: the project, the fund, the year it was first approved and the amount. Anything carried two years or more comes back to council for a vote to keep it.
Each balance, how long it has been owed, and the date repayment is expected. Start with the $13.1 million in grant reimbursements, and name the grants.
Transfers out of the General Fund ran $7.5 million above the final budget in FY2025, with no explanation in the report. If council authorized it, link the action from the city's budget page. If it didn't, say so.
To be clear about what this is not. Nothing in these reports suggests fraud. The outside auditor, Badawi & Associates, issued clean opinions both years and found no material weaknesses in internal control. Measured by standard accounting (GAAP), total General Fund balance held near $153 to $155 million. Spending money that council approved in an earlier year is legitimate, and it explains part of the gap.
This page doesn't blame police or fire. Overtime is what fills shifts when positions sit empty, and the city says so itself. The finance staff wrote the explanations quoted on this page. The asks are about what council sees and when it sees it.
All figures come from the City of Berkeley's ACFRs for FY2023, FY2024 and FY2025. Each link below opens the PDF at the page cited (page numbers are the PDF's page count, which differs from the printed page number). "Original budget" in the ACFR is the budget council adopted in June. "Final budget" adds every amendment during the year, including money carried forward from earlier years. "Budgetary basis" is how the city counts for budget purposes: revenue when it arrives in cash, and loans between funds as money in or out.
Every General Fund line for all three years, with the differences computed, is in one file: gf-budget-vs-actual-fy2023-fy2025.csv. Each component line in the table was summed and checked against the city's printed totals; all of them match.
| FY2023 | FY2024 | FY2025 | |
|---|---|---|---|
| Net change in fund balance, adopted budget | −18,281,539 | +3,852,013 | +2,013,051 |
| Net change in fund balance, final budget | −22,146,120 | −43,316,544 | −17,820,541 |
| Net change in fund balance, actual | +19,052,089 | −28,829,957 | −16,683,282 |
| Actual minus adopted | +37,333,628 | −32,681,970 | −18,696,333 |
| Fund balance at year-end, budgetary basis | 137,509,127 | 108,679,170 | 91,995,888 |
The final budget, which includes money carried forward from earlier approvals, predicted most of the drawdown. The adopted budget, the one council votes on in June, did not. FY2023 missed the other way: it was adopted at a $18.3 million deficit and ended with a $19.1 million surplus.
Source: General Fund budget-and-actual schedule — FY2023 ACFR, PDF p. 61 · FY2024 ACFR, PDF p. 60 · FY2025 ACFR, PDF p. 58
| Public safety | FY2023 | FY2024 | FY2025 |
|---|---|---|---|
| Adopted | 123,746,013 | 124,633,968 | 135,896,489 |
| Final | 124,294,712 | 128,238,444 | 137,870,382 |
| Actual | 128,394,573 | 136,392,093 | 147,153,814 |
| Actual minus adopted | +4,648,560 (3.8%) | +11,758,125 (9.4%) | +11,257,325 (8.3%) |
| Actual minus final | +4,099,861 | +8,153,649 | +9,283,432 |
The FY2025 budget, adopted June 25, 2024, came in $0.5 million below what public safety spent in FY2024, which closed five days later. The city's explanation is the same sentence in both years:
"Public Safety was over budget by $9.3 million due to overspending of Police and Fire overtime budgets. This was related to staffing shortages forcing mandatory overtime, and due to mutual aid requests." (FY2025; the FY2024 text is identical except for "$8.2 million.")
Source: FY2024 ACFR, PDF p. 62 · FY2025 ACFR, PDF p. 60. The ACFR does not split police from fire, and it reports no figure for mutual-aid reimbursement.
On standard accounting (GAAP), the General Fund's total balance barely moved. What changed is how it is labeled. "Unassigned" money is available for any purpose. The rest is restricted by law, committed by council action, or assigned to a planned use.
| General Fund balance (GAAP) | 6/30/2023 | 6/30/2024 | 6/30/2025 |
|---|---|---|---|
| Restricted | 31,121,862 | 38,165,215 | 42,170,823 |
| Committed | 40,677,503 | 54,289,457 | 58,314,770 |
| Assigned | 16,752,951 | 30,337,661 | 22,721,191 |
| Nonspendable | 0 | 660,000 | 0 |
| Unassigned | 69,914,828 | 29,576,925 | 31,670,881 |
| Total | 158,467,144 | 153,029,258 | 154,877,665 |
Why the budgetary-basis balance in section 1 ($92.0 million) is so much lower than the GAAP balance here ($154.9 million): the budget basis counts revenue only when cash arrives and treats loans to other funds as spent. The city's reconciliation for FY2025 adds back $10.9 million in receivables and $22.9 million in repayments and advances from other funds, and subtracts $15.0 million in payables.
Source: five-year General Fund balance table — FY2024 ACFR, PDF p. 55 · FY2025 ACFR, PDF p. 53. The FY2024 ending balance was restated to $152,752,975 in the FY2025 report (see section 7).
The ACFR states that "any revisions or transfers that alter the total appropriations of any fund must be approved by the City Council." The report gives no explanation for the $7.5 million in transfers above the final budget. Part of it is probably loans to other funds. On the budget basis a loan counts as money going out, and the city's FY2025 reconciliation adds back $5,158,320 of "due from other fund – advance." Over the same year, what other funds owe the General Fund rose by $5.0 million (section 6). I couldn't find the council action that authorized the overage, which is why it is Ask 05.
Source: FY2025 ACFR, PDF p. 58 (schedule) · PDF p. 180 (appropriation rule) · PDF p. 113 (transfers)
These figures cover all city funds. "Encumbered" means under contract or purchase order. "Unencumbered" means approved and carried forward with no contract yet.
| Carried into | Original appropriation | Encumbered rollover | Unencumbered carryover | Unencumbered as % of original |
|---|---|---|---|---|
| FY2023 | 624,477,177 | 104,311,483 | 41,210,547 | 6.6% |
| FY2024 | 621,229,929 | 102,474,100 | 83,054,324 | 13.4% |
| FY2025 | 686,125,119 | 100,876,953 | 130,537,377 | 19.0% |
The General Fund's own street line shows the same pattern. Highways and streets spent 68% of its final budget in FY2023, 42% in FY2024 and 68% in FY2025 (3,168,334 ÷ 4,685,022; 2,230,955 ÷ 5,298,572; 2,753,578 ÷ 4,057,812). The city's explanation: "salary savings and underspending of non-personnel funds." Most street paving is paid from other funds, so this line is a small part of the street budget.
Source: Notes to Required Supplementary Information — FY2023 ACFR, PDF p. 186 · FY2024 ACFR, PDF p. 177 · FY2025 ACFR, PDF p. 180
| Owed to the General Fund by | 6/30/2023 | 6/30/2024 | 6/30/2025 |
|---|---|---|---|
| Grant Fund | 11,704,269 | 12,994,083 | 13,132,820 |
| Building Purchases & Management | 675,655 | 1,393,174 | 2,277,928 |
| Marina Operations | — | — | 2,477,099 |
| Off-Street Parking | 474,893 | 589,938 | 1,625,433 |
| Special revenue and debt service funds | 2,713,040 | 915,269 | 1,379,604 |
| Internal service funds | 466,322 | 469,037 | 468,435 |
| Total | 16,034,179 | 16,361,501 | 21,361,319 |
In FY2024 and FY2025 the note calls these "temporary negative cash balances pending grant reimbursements or other receivables… expected to be repaid within the next fiscal year." The Grant Fund balance has been above $11 million at every year-end since 2023. The reports don't say which grants are behind it or how old the receivables are.
Source: Note 4, Interfund Transactions — FY2023 ACFR, PDF p. 121 · FY2024 ACFR, PDF p. 114 · FY2025 ACFR, PDF p. 113
The FY2025 report corrected errors in the prior year's books: $1,090,072 of General Fund revenue that had been overstated, and an $813,789 transfer recorded in the wrong fund. It also removed an improperly recorded liability in the Building Maintenance Fund. The report gives that liability as $456,000 in its text and $465,000 in its table.
The outside auditor's opinion covers the basic financial statements. The budget-to-actual schedule is "required supplementary information." For that schedule the auditor says: "We do not express an opinion or provide any assurance on the information."
That schedule contains an arithmetic error that repeats every year. In the variance column, short-term borrowing (TRAN) issuance costs, which were not budgeted, are shown as a favorable variance. That overstates the total expenditure underspend by twice the cost:
The dollars are small. The auditor gives this table no assurance, the same error has appeared three years running, and this table is the only place in the report that sets the adopted budget beside the results.
Source: FY2025 ACFR, PDF p. 171 (restatement) · PDF p. 37 (auditor on supplementary information) · PDF p. 382 (no material weaknesses) · FY2024, PDF p. 371
"Although the FY26 Update is balanced, it relies on one-time savings and temporary measures to close the gap between revenues and expenditures. These measures include: Holding 44.4 vacant positions unfunded … Transferring $5.2 million from Workers' Compensation fund to the General Fund · Transferring $6.2 million from the IT Cost Allocation Fund balance to the General Fund … The General Fund faces a structural deficit that cannot be resolved through one-time solutions alone."
Source: City Manager's transmittal letter, FY2025 ACFR, PDF p. 11
What these numbers can't tell you. I read the year-end reports, not the adopted budget books. The "original budget" column is the city's own record of what was adopted, but I haven't checked it line by line against the June budget documents. The ACFR doesn't split police from fire, list which projects carried money forward, or age the grant receivables. I don't know the legal level at which Berkeley controls appropriations (fund, department, or line), so section 4 is a question, not a finding of a violation. Totals for any line here that mix carried-forward money with new money can't be cleanly separated from these reports alone.
Council approves the FY2024 Adopted Budget Update. General Fund adopted net change: +$3.9 million.
Outside auditor signs the FY2023 report. Unassigned General Fund balance: $69.9 million.
Council adopts the FY2025–26 biennial budget. FY2025 public safety is budgeted at $135.9 million. FY2024, closing five days later, spends $136.4 million.
FY2024 closes: −$28.8 million on the budget basis; public safety $11.8 million over adopted; unassigned balance down to $29.6 million.
Outside auditor signs the FY2024 report, seven months after year-end.
Council approves the FY2026 Update, balanced with one-time measures including 44.4 vacant positions held unfunded.
FY2025 closes: −$16.7 million on the budget basis; public safety $11.3 million over adopted; transfers out $7.5 million over the final budget; $130.5 million carried forward unspent and uncommitted.
Outside auditor signs the FY2025 report, which corrects $1.09 million of overstated FY2024 General Fund revenue. The city posts the report in January 2026.
Not published in any report I found: overtime by department, mutual-aid reimbursements, the list of projects behind the carryovers, the age of the grant receivables, or a council action authorizing the FY2025 transfers above the final budget. If any of these exists, send it and I'll correct this page.