Analyses

In FY2025 grants fell in 16 parts of the school budget. The town’s money rose in 8 of them.

Every dollar the district spent, split by the fund that paid it, FY2009 to FY2025 — from the state’s End of Year Financial Report.

89.9%
of school spending came out of the general fund in FY2025, against 81.5% in FY2009
8 · $1,136,013
functions where grants fell and the general fund rose — grants -$1,127,647
8 · -$606,553
functions where grants fell and the general fund did not rise — grants -$1,542,511
-$2,023,188
the grant fall across every function present in both years — the largest in the record, against -$563,266 in FY2013

These are fund totals, not grants, and not people. The state collects what each district spent against each of its own function codes and splits it two ways: the general fund, and grants and revolving funds together. It does not name a grant, it does not name a post, and a general fund rise beside a grant fall in the same function is consistent with the town picking up a cost without establishing it. Nothing on this page says the town took over any particular thing, because nothing published says that.

statedthe district’s own statutory return to the state

What this establishes

Finding 1

The general fund carries 89.9% of school spending, up 8.4 points since FY2009 — and it did not get there in a straight line.

Grants and revolving funds paid 18.5% of everything the district spent in FY2009 and 10.1% in FY2025. In between they fell to 5.9% in FY2020 and came back to 14.5% in FY2024, their highest share since FY2012. Whatever else this shows, the share the town carries is not fixed, and a budget that assumes it is will be wrong in both directions.
Finding 2

FY2025 is the biggest year on record for both things at once: 8 functions where the town’s money replaced grant money, and 8 where it did not.

In the first group grants fell $1,127,647 and the general fund rose $1,136,013. In the second grants fell $1,542,511 and the general fund fell $606,553 as well. No earlier year comes close on either count — the largest previous swap was $738,033 of grants in FY2014.
Finding 3

Read district-wide, FY2025 looks like an almost exact replacement. That reading is wrong, and it is the easiest mistake on this page to make.

Across the 43 functions present in both years, grants fell $2,023,188 and the general fund rose $1,999,627 — a total change of -$23,561. Two numbers that close to each other invite one sentence: the town picked up what the grants stopped paying. Decomposed, it is two unrelated movements landing on similar figures, and the section below shows which.
Finding 4

Even where the town’s money rose, it usually did not rise by as much — 4 of the 8 swaps still spent less in total than the year before.

Guidance incl Adjustment Counselors is the clearest: grants -$428,805, general fund $165,029, so $263,776 less was spent against that function across both funds than in FY2024. A function in the swap group is one where the general fund rose. It is not one where the town made the function whole, and the two are different claims.

The number this page nearly published

The first version of this analysis had one headline: grants fell $2,023,188, the general fund rose $1,999,627, and the district spent $23,561 less in all. Those three figures are correct. The sentence anybody would build from them is not.

What the aggregate says

Grants -$2,023,188. General fund $1,999,627. Net -$23,561 across 43 functions. It reads as a handover.

What the decomposition says

8 functions swapped: $1,127,647 of grants out, $1,136,013 of general fund in. 8 functions simply lost the money: $1,542,511 of grants, and a further $606,553 of general fund on top.

And what is actually the biggest number

Insurance for Active Employees rose $3,026,556 in the general fund — on its own, larger than the entire grant fall. Grants in that function moved $179,646. Meanwhile Insurance for Retired School Employees fell $1,125,784 across both funds.

So the aggregate is several things at once. 8 functions did hand over from one fund to the other. Across the 27 functions where grants did not fall, the general fund moved $1,470,167 — a movement with no grant fall anywhere behind it, and it is bigger than the swap. The total lands near zero because large changes in both directions cancel, not because one replaced the other. The near-identity is a coincidence of magnitudes, and it is the only thing on this page that would have been quoted at a meeting.

What this does not show

This section does not establish that the aggregate is meaningless — it is a real total of real figures. It establishes that the aggregate cannot answer the question people ask of it. And the decomposition has its own limit: sorting a function into “swapped” or “reduced” is our classification, on the signs of two numbers, and the state publishes no such label.

Both funds, every year the state has collected them

The two parts of one total — the state’s own total column, which the extract reconciles to before any of this is published. The general fund is what the town appropriates and argues about at Town Meeting. Everything above it is money the district spends that never appears in that argument.

FY09FY10FY11FY12FY13FY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25$0$8,000,000$16,000,000$24,000,000$32,000,000
general fund — what the town appropriatesgrants and revolving funds — outside the budget everyone votes on

The same figures

YearGeneral fundGrants and revolvingAll fundsGeneral fund share
FY09$15,842,808$3,603,645$19,446,45381.5%
FY10$16,287,750$3,104,025$19,391,77584.0%
FY11$16,387,213$3,060,525$19,447,73884.3%
FY12$17,152,190$3,041,224$20,193,41484.9%
FY13$18,199,750$2,476,542$20,676,29288.0%
FY14$18,782,388$2,333,940$21,116,32889.0%
FY15$19,400,624$2,019,663$21,420,28790.6%
FY16$20,088,618$2,108,544$22,197,16290.5%
FY17$21,032,539$2,493,775$23,526,31389.4%
FY18$22,586,382$1,805,429$24,391,81192.6%
FY19$22,971,644$1,623,462$24,595,10693.4%
FY20$23,005,734$1,453,893$24,459,62694.1%
FY21$23,599,163$2,237,805$25,836,96891.3%
FY22$24,980,292$2,384,081$27,364,37291.3%
FY23$25,613,575$3,945,897$29,559,47286.7%
FY24$25,289,273$4,287,612$29,576,88585.5%
FY25$26,986,344$3,044,898$30,031,24289.9%

The same thing as a share, plotted from zero

The general fund share never drops below 81.5% across the whole record, so drawing it needs an axis that does not start at zero — and a truncated axis on a share turns a real move into a cliff. Its complement carries the same information and starts at zero.

FY09FY10FY11FY12FY13FY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY250%6%12%18%21%
grants and revolving funds, as a share of all school spending

What this does not show

A share moves when either part moves. Grants falling to 5.9% in FY2020 is consistent with grants shrinking, with general fund spending growing, and with both — and the dollar chart above is where to check which. Nor is a share a judgement: a district with more grant money is not thereby better funded, and one with less is not thereby cut.

Where grants fell, and what happened next

Every function present in two consecutive years, sorted on the signs of two numbers. The top panel is the functions where grants fell and the general fund rose. The bottom is the functions where grants fell and the general fund did not. They share a scale so they can be compared — and they are drawn apart so they cannot be added, because adding them is the aggregate this page refuses to report.

Grants fell, the general fund rose

The two bars mirror. Same function, same year, the money arriving from a different fund.

FY10FY11FY12FY13FY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25-$3,406,519-$1,406,519$593,481$3,103,899

Grants fell, the general fund did not rise

Both bars point down. Nothing replaced the grant money in these functions.

FY10FY11FY12FY13FY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25-$3,406,519-$1,406,519$593,481$3,103,899
change in grants and revolving fundschange in the general fund

Every year, both classes, never netted

YearSwapped: functionsSwapped: grantsSwapped: general fundReduced: functionsReduced: grantsReduced: general fundFunctions matched
FY108-$716,553$707,9106-$74,313-$39,80046
FY119-$403,287$562,0779-$227,056-$269,56745
FY1213-$611,331$554,2968-$158,730-$39,08546
FY1310-$559,912$1,018,6538-$282,187-$141,31845
FY1410-$738,033$817,6762-$110,694-$129,98545
FY1512-$270,992$479,9067-$282,745-$382,34147
FY166-$114,732$538,0465-$68,785-$529,02447
FY177-$62,729$218,9186-$108,743-$355,99248
FY1814-$691,382$2,873,9816-$61,070-$90,27747
FY1913-$432,798$641,8312-$14,531$051
FY209-$300,193$675,3767-$174,979-$392,86850
FY214-$241,898$193,7512-$14,292$049
FY228-$533,165$565,0007-$402,993-$151,36250
FY233-$261,966$131,5220$0$053
FY248-$243,262$486,8425-$688,125-$3,154,18447
FY258-$1,127,647$1,136,0138-$1,542,511-$606,55343

The largest single swaps in the whole record

One function, one year, ranked on how far the grant money fell. The list is here because the year-by-year totals above are sums over many functions, and a reader should be able to see which individual movements are doing the work.

YearFunctionCodeGrantsGeneral fundAll funds
FY14Teachers, Classroom2305-$485,283$204,187-$281,096
FY25Guidance incl Adjustment Counselors2710-$428,805$165,029-$263,776
FY18Tuition to Non-Public Schools9300-$339,141$159,325-$179,816
FY25Tuition to Non-Public Schools9300-$308,247$305,812-$2,435
FY10Teachers, Classroom2305-$261,499$261,627$128
FY25Paraprofessionals2330-$254,461$181,363-$73,098
FY13Insurance for Active Employees5200-$246,329$310,095$63,766
FY22Teachers, Classroom2305-$229,643$386,034$156,391
FY10Tuition to Non-Public Schools9300-$170,119$3,871-$166,248
FY11Insurance for Active Employees5200-$165,939$12,509-$153,430
FY22General Classroom Supplies2430-$158,261$5,723-$152,538
FY13Teachers, Classroom2305-$149,410$280,504$131,094
FY12Other Student Activities3520-$135,686$325-$135,361
FY23School Leadership2210-$130,984$49,878-$81,106
FY20Maintenance of Buildings4220-$130,000$31,558-$98,442

What this does not show

A function is a bucket, not a programme: Teachers, Classroom is one code covering every classroom teacher in the district. Both funds can move inside one code for reasons that have nothing to do with each other, and this classification cannot see that. It also has nothing to say about functions that appear in one year and not the next — those cannot be differenced at all, and are simply absent from both panels.

FY2025, function by function

Grants fell and the general fund rose

8 functions. Grants -$1,127,647, general fund $1,136,013. The signs are kept from here down: these are tables of movements rather than sentences about them.

Guidance incl Adjustment Counselors 2710-$428,805 · $165,029
Tuition to Non-Public Schools 9300-$308,247 · $305,812
Paraprofessionals 2330-$254,461 · $181,363
Instructional Hardware - Student and Staff Devices (computers) 2451-$50,000 · $171
School Leadership 2210-$49,644 · $122,519
Medical/ Therapeutic Services 2320-$27,779 · $311,743
Medical/Health Services 3200-$8,463 · $32,842
Textbooks 2410-$248 · $16,534
grants and revolving — paler where the bar is a fallgeneral fund — paler where the bar is a fall
FunctionCodeIn or out of districtGrantsGeneral fundAll funds
Guidance incl Adjustment Counselors2710In-District-$428,805$165,029-$263,776
Tuition to Non-Public Schools9300Out-of-District-$308,247$305,812-$2,435
Paraprofessionals2330In-District-$254,461$181,363-$73,098
Instructional Hardware - Student and Staff Devices (computers)2451In-District-$50,000$171-$49,829
School Leadership2210In-District-$49,644$122,519$72,875
Medical/ Therapeutic Services2320In-District-$27,779$311,743$283,964
Medical/Health Services3200In-District-$8,463$32,842$24,379
Textbooks2410In-District-$248$16,534$16,286

Grants fell and the general fund did not rise

8 functions. Grants -$1,542,511, general fund -$606,553.

Teachers, Classroom 2305-$808,239 · -$247,393
Other Instructional Matls (Libraries) 2415-$246,164 · -$828
Psychological Services 2800-$192,409 · -$69,626
Tuition to Collaboratives 9400-$86,364 · -$162,022
Instructional Equipment 2420-$76,450 · -$1,876
Curriculum Directors and Dept. Heads (Supervisory) 2110-$74,476 · -$5,016
Substitutes, Short-Term 2325-$41,070 · -$110,130
Other Instructional Services 2440-$17,339 · -$9,662
grants and revolving — paler where the bar is a fallgeneral fund — paler where the bar is a fall
FunctionCodeIn or out of districtGrantsGeneral fundAll funds
Teachers, Classroom2305In-District-$808,239-$247,393-$1,055,632
Other Instructional Matls (Libraries)2415In-District-$246,164-$828-$246,992
Psychological Services2800In-District-$192,409-$69,626-$262,035
Tuition to Collaboratives9400Out-of-District-$86,364-$162,022-$248,386
Instructional Equipment2420In-District-$76,450-$1,876-$78,326
Curriculum Directors and Dept. Heads (Supervisory)2110In-District-$74,476-$5,016-$79,492
Substitutes, Short-Term2325In-District-$41,070-$110,130-$151,200
Other Instructional Services2440In-District-$17,339-$9,662-$27,001

And the largest general fund increases, whatever the grants did

The two lists above are selected on a grant falling, which is exactly the selection that makes a year look like a handover. These are the biggest general fund movements in FY2025 without that filter.

FunctionCodeGeneral fundGrantsAll funds
Insurance for Active Employees5200$3,026,556$179,646$3,206,202
Medical/ Therapeutic Services2320$311,743-$27,779$283,964
Tuition to Non-Public Schools9300$305,812-$308,247-$2,435
Transportation Services3300$282,882$0$282,882
Athletics3510$245,385$32,796$278,181
Paraprofessionals2330$181,363-$254,461-$73,098

And the largest falls across both funds

FunctionCodeAll fundsGrantsGeneral fund
Insurance for Retired School Employees5250-$1,125,784$0-$1,125,784
Teachers, Classroom2305-$1,055,632-$808,239-$247,393
Technology Infrastructure, Maintenance, and Support - All Other4450-$458,532$0-$458,532
Business and Finance1410-$287,850$19,271-$307,121
Guidance incl Adjustment Counselors2710-$263,776-$428,805$165,029
Psychological Services2800-$262,035-$192,409-$69,626

The one line this project has flagged as load-bearing

The in-district special education escalator in this project’s model rests on a paraprofessional line, and the standing note beside it says the line cannot be distinguished from grant money unwinding. In FY2025 function 2330, Paraprofessionals, moved -$254,461 in grants and $181,363 in the general fund — -$73,098 across both. This is as close as the published record gets, and it is not close enough: it shows the funding mix for a function moving. It does not show a post moving, or a person, or the same work being paid for from a different pocket.

A possible explanation — nothing here tests it

The obvious reading is that federal money which had been paying for paraprofessionals ran out and the town picked some of it up. It fits. So does a reallocation between codes, a change in how a post is classified, or an unrelated general fund increase in the same code in the same year. Nothing in the state return distinguishes them.

What would settle it: the district’s grant award and payroll charge detail for these posts, by fund and fiscal year — which would say which post each grant paid and what happened to it, and which nothing published does.

What was said at the time

This project’s method requires it: for anything a report says rose or fell, search the meeting archive for what people said about that thing in the same year. This is the one page where the answer is abundant. The end of the federal money was discussed at length, by name, with figures attached, and well before it happened.

“We have a loss of $650,000 in ESSER funds, this is much more significant than we expected.”

School Committee · 2023-11-15 · our copy · the town’s

Said while the FY2025 budget was being developed -- the year DESE later reports the largest grant fall on record. It is the district naming the quantity in advance.

“We are anticipating a 10% increase in health insurance to be $500,000, Contractual increases of $400,000 and the loss of ESSER funds of $600,000. While we knew ESSER funds would not be continuing, the increase in health insurance was unexpected.”

School Committee · 2024-01-17 · our copy · the town’s

The two movements this page insists are separate, named separately in the same paragraph by the people doing the budget. The insurance rise and the grant loss are one sentence apart and are not the same event.

“I personally did not feel it appropriate to transfer the burden of that money from the federal government grants on to the backs of Lunenburg taxpayers.”

School Committee · 2024-05-22 · our copy · the town’s

The swap-or-reduction question, put as policy, by the Chair, after the override passed. It says what was intended. It does not say what happened, and DESE reports both outcomes in the same year.

“These cuts do equal the ESSER funds when cuts are made per contract.”

School Committee · 2024-06-12 · our copy · the town’s

Said in the same passage as a list of the posts being cut. The page reports this beside the state figures rather than against them: a count of posts and a fund total are different quantities.

“Ms. Cameron reflected on the impact budget cuts have had on the schools over the years, including the elimination of a librarian position at the Primary school”

School Committee · 2026-03-10 · our copy · the town’s

One of the largest reductions in FY2025 is a line DESE calls Other Instructional Materials (Libraries). THESE ARE NOT THE SAME THING and this page cannot connect them: that line is materials rather than posts, the speaker names no year, and DESE reports dollars against a function rather than positions. It is here because a resident who remembers a librarian going will find the library line, and an unaddressed number is worse than an addressed one.

“So we didn ’t cut beyond ESSER, which is a really important thing to remember”

School Committee · 2025-09-03 · our copy · the town’s

A year later, the same claim in retrospect. Quoted with the space the extracted text carries, because that is what the document renders to.

What this does not show

Every one of these is a statement of intent or of belief, made by people describing a budget they were about to vote. None of them is a measurement, and this page does not test any of them against the state’s figures — a stated plan not to shift a cost onto the town and a function where the general fund rose are not the same quantity, are not on the same calendar, and would not be reconciled by putting them side by side. They are here because a reader is entitled to know that the thing being measured was discussed, and how.

The terms run against the archive, with what each returned: ESSER in 125, ARPA in 360, circuit breaker in 27, grant funded in 10, one-time funds in 2, federal grant in 76, Title I in 38, revolving in 145. Searched across 12,014 extracted documents, out of 12,015 the archive holds. Only 8,899 of those — 74% — carry readable text at all; the other 3,116 are mostly image scans (3,096 of them) awaiting OCR. An empty result above is a statement about the readable archive and never about the town.

What would have shown this coming

The district said it, in public, with a figure, before the budget was voted. The loss was named to the School Committee on 2023-11-15 and again on 2024-01-17, alongside the insurance increase that was not anticipated. Whatever else is arguable here, naming a known cliff far enough ahead to plan around it is the thing a board most needs and does not always get, and the record shows it happening.

And the fund split is published every year. The state has collected it since FY2009; it arrives after the year closes, so it is a check on what happened rather than a warning about what is coming. What neither source carries is which grant — and that is the number that would have let anybody test the claim being made at the time.

One thing to ask for next year

The district’s end-of-year grant expenditure detail by grant code — or Schedule 19 of the End of Year Financial Report as filed, which lists each grant separately — alongside the budget rather than after it. That single document turns “grants and revolving funds fell $2,023,188” into a statement about named programmes with end dates, which is what a board is being asked to plan against. It is a report the accounting the district already files can produce.

“Were the cuts really only the grant money?”

It is the question this page will be read for, and the honest answer is that nothing here tests it. The claim is about posts and contracts; this source reports dollars against function codes, split two ways, with every grant and every revolving fund in one column. Those are different quantities on different calendars, and putting them beside each other would not reconcile them. What the state’s figures do show is that in FY2025 the money left 16 functions and the general fund rose in 8 of them — which bounds the question and does not settle it.

How this was measured

One table. dese_function_expenditure, LEA 01620000. The FY2009–FY2025 frame comes from the rows the state marks as the district total; every function-level figure comes from the detail rows, joined to themselves one year apart on the function code and on whether the spending is in or out of district. 43 functions matched across FY2024–FY2025.

Each matched function falls into exactly one of four classes, on the signs of two differences. These labels are ours. The state publishes the two columns and no classification of them.

The four classes, and FY2025 in each

ClassWhat it meansFunctionsGrantsGeneral fund
swappedgrants fell and the general fund rose8-$1,127,647$1,136,013
reducedgrants fell and the general fund did not rise8-$1,542,511-$606,553
grants grewgrants rose10$646,970$2,981,452
grants unchangedno grant money moved either way17$0-$1,511,285
every matched functionthe aggregate — not a finding43-$2,023,188$1,999,627

The last row is in the table because the four classes have to be seen to account for every function — three of them adding to something short of the total, with no way to tell which functions were missing, is worse than printing the aggregate with a label on it. It is not a finding and the page does not use it as one.

A figure we computed that is not a measurement

What the general fund would have carried in 2025 if the split had stayed at its 2009 share. If grants and revolving funds had gone on paying 18.5% of everything, the general fund would have carried $24,466,117 in FY2025 rather than $26,986,344 — a difference of $2,520,227.

What this does not show

That is arithmetic on a counterfactual, not a saving and not a cost. It assumes the district would have spent the same total either way, which is the assumption most likely to be wrong: grant money is largely competitive and time-limited, and a district with less of it usually does less rather than the same for more. Quoting it as “what the grants ending cost the town” would be exactly the error this page is about.

What this cannot say

Which grant. DESE reports a fund total; it does not name a grant.

Which post. A dollar attributed to a fund is not a person, and a function falling in one fund while rising in another does not establish that anybody moved between them.

That the same activity continued. A general fund rise beside a grant fall is equally consistent with the town picking up a cost and with two unrelated things happening in one function in one year.

A district-wide netting. In FY2025 the aggregate reads as though the town replaced almost exactly what grants stopped paying; decomposed, half the grant fall was replaced and half simply stopped, and the largest general fund increase that year was employee insurance, which no grant was paying.

Closes: Nothing published maps a grant to the posts it paid for. DESE’s End of Year Financial Report is the furthest the public record goes: it separates the funds and stops there. The district’s own grant award letters and its end-of-grant reports would name the positions. These limits are rows in the register at what we cannot answer, which is what the records request reads — not prose written only here.

The document behind this

Massachusetts Department of Elementary and Secondary Education. A statutory return. DESE sets the schema, not the district. Our copy is district-expenditures-by-function.xlsx (26.2 MB), fetched from https://educationtocareer.data.mass.gov/resource/cnfs-edqq.csv. Its sha256 is 9e43789807b17ea6a1098273da8fb7fd8a28c20d4cd4733ba9e25fc69d4d4423.

The payload this page draws is published whole at /data/grant-unwinding.json, and the rows behind it can be queried directly — see the database. The same DESE split, for the categories where the district’s own book took lines to zero, is on what stopped being funded.

One thing about scope

This is the school department only, and it is a statutory return. The district files it to the state’s definitions rather than its own, which is what makes 17 comparable years possible at all — the district’s own budget book changed shape twice in the same period. Nothing here compares the town side with the school side; the town codes its accounts by function and the district files against DESE’s, and this project refuses to invent the mapping between them.

What changed

Version 14 — updated September 7, 2026