Hot Topics · 13 Budget Citywide

Berkeley's adopted budget and its year-end books differ by tens of millions. Council should see the difference before every budget vote.

Each June the City Council adopts a General Fund budget. About six months after the fiscal year closes, the city publishes its audited Annual Comprehensive Financial Report (ACFR), which sets that budget beside what was actually collected and spent. For FY2024 and FY2025 the adopted budgets showed small surpluses. The year-end results showed drawdowns of $28.8 million and $16.7 million.

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.

Last updated 4 October 2026

The short version

  1. Council adopted General Fund budgets showing a $3.9 million surplus for FY2024 and $2.0 million for FY2025. The city's own year-end schedules show the same budgets ended with drawdowns of $28.8 million and $16.7 million, measured the same way.
  2. Part of that gap is money council approved in earlier years and carried forward. The rest is lines that run over every year, led by police and fire overtime: $11.8 million and $11.3 million above the adopted budget.
  3. Money appropriated but neither spent nor put under contract by year-end tripled, from $41.2 million to $130.5 million. For three years running, the General Fund has also been covering an $11.7 to $13.1 million cash shortfall in the Grant Fund.
  4. The budget-to-actual table is the one schedule the outside auditor gives no opinion on. Its expenditure variance carries the same small sign error three years in a row.
  5. I'd put the audited budget-to-actual table, by department, on the agenda with every budget, and budget overtime at what it actually costs.
The tradeoff

What is actually being balanced here

Each of these tradeoffs draws on the same thing: one General Fund, about $275 million a year in revenue.

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.

Show council last year's results before it votes on next year's budget.

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.

  • Ask 01Put the audited budget-to-actual table on the agenda with every budget.

    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.

  • Ask 02Budget police and fire overtime at what it has actually cost.

    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.

  • Ask 03Publish the carryover list every year.

    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.

  • Ask 04Publish what other funds owe the General Fund.

    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.

  • Ask 05Show the council action behind the FY2025 transfers.

    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.

Five numbers from the city's reports

$11.3M
Police & fire over adopted budget, FY2025
−58%
Unassigned General Fund balance, FY2023 to FY2024
$130.5M
Unspent, uncommitted money carried into FY2025 (all funds)
$13.1M
Owed to the General Fund by the Grant Fund, 6/30/2025
$4.6M
FY2025 outflows above the final budget
How each number was found

Every figure, its page, and the calculation

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.

1. The adopted budget showed a surplus. The year ended in a drawdown.

FY2023FY2024FY2025
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 basis137,509,127108,679,17091,995,888
FY2024 + FY2025 adopted: 3,852,013 + 2,013,051 = +5,865,064 FY2024 + FY2025 actual: −28,829,957 + (−16,683,282) = −45,513,239 Budgetary fund balance: 137,509,127 → 91,995,888 = −45,513,239 (−33%)

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

2. Police and fire run over budget every year, and the gap has grown.

Public safetyFY2023FY2024FY2025
Adopted123,746,013124,633,968135,896,489
Final124,294,712128,238,444137,870,382
Actual128,394,573136,392,093147,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
Growth in actual spending, FY2023 → FY2025: 147,153,814 − 128,394,573 = +18,759,241 (+14.6%) FY2025 adopted vs. FY2024 actual: 135,896,489 − 136,392,093 = −495,604

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.

3. Total reserves held steady. The part free for any use fell by more than half.

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/20236/30/20246/30/2025
Restricted31,121,86238,165,21542,170,823
Committed40,677,50354,289,45758,314,770
Assigned16,752,95130,337,66122,721,191
Nonspendable0660,0000
Unassigned69,914,82829,576,92531,670,881
Total158,467,144153,029,258154,877,665
Unassigned, FY2023 → FY2024: 29,576,925 − 69,914,828 = −40,337,903 (−57.7%) Committed + assigned, same year: (54,289,457 + 30,337,661) − (40,677,503 + 16,752,951) = +27,196,664

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

4. In FY2025, money going out exceeded the final budget.

Final budget Actual Difference Expenditures 264,245,697 261,384,997 −2,860,700 Transfers out 32,207,404 39,679,126 +7,471,722 Total going out 296,453,101 301,064,123 +4,611,022 FY2024, same test: 307,886,873 295,691,420 −12,195,453 (under)

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)

5. Unspent, uncommitted money carried forward tripled in two years.

These figures cover all city funds. "Encumbered" means under contract or purchase order. "Unencumbered" means approved and carried forward with no contract yet.

Carried intoOriginal appropriationEncumbered rolloverUnencumbered carryoverUnencumbered as % of original
FY2023624,477,177104,311,48341,210,5476.6%
FY2024621,229,929102,474,10083,054,32413.4%
FY2025686,125,119100,876,953130,537,37719.0%
130,537,377 ÷ 41,210,547 = 3.17×

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

6. Other funds owe the General Fund $21.4 million, and the balances keep rolling over.

Owed to the General Fund by6/30/20236/30/20246/30/2025
Grant Fund11,704,26912,994,08313,132,820
Building Purchases & Management675,6551,393,1742,277,928
Marina Operations——2,477,099
Off-Street Parking474,893589,9381,625,433
Special revenue and debt service funds2,713,040915,2691,379,604
Internal service funds466,322469,037468,435
Total16,034,17916,361,50121,361,319
FY2025 check: 1,379,604 + 13,132,820 + 6,380,460 + 468,435 = 21,361,319 (matches "Due from other funds" on the General Fund balance sheet)

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

7. Revenue that was billed late, paid late, or budgeted high.

8. Corrections, and the schedule nobody audits.

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:

Final − actual Printed variance Difference 2 × TRAN cost FY2023 33,122,819 33,257,349 134,530 2 × 67,265 FY2024 13,936,019 14,076,639 140,620 2 × 70,310 FY2025 2,860,700 3,042,468 181,768 2 × 90,884

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

9. What the city says about where this leaves it

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

The record: two budgets, two year-end reports

Don't take my word for it

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.

Tell me where I'm wrong More Hot Topics