An analysis, written by this project

Athletics: what it costs, who pays, and what the budget line does not say

The one programme where both sides of the money are visible, and therefore the only place the net-versus-gross problem can be measured rather than described.

MarkdownPDF7,302 words41 KBlast changed 2026-09-07sha256 fa4828b04034390c…

Working state: notes/HANDOFF.md carries the current branch and what is established versus assumed. CLAUDE.md carries the rules. Fee revenue and fund balances are worked in sped-and-funds.md §2.2 and are not restated here.

Analysis, August 2026. Part of the source archive.

Every section is written twice: In plain terms for anyone, and The evidence for anyone who wants to check it. The plain version never states anything the evidence does not support.

Verify every figure below with:

python3 scripts/verify_athletics.py


Why athletics needed its own document

Athletics is 1.7% of the school budget. By rule 4 — weight times excess rate — it is not a driver of the gap and never will be. It earned a document anyway, for two reasons.

The first is that it is the one program where the town has a real choice, and residents argue about it more than about anything else its size. A tool that helps somebody understand their options has to get this one right.

The second is the reason this document exists at all. Athletics is the only part of the budget where we can see both sides of the money. For every other line, the town publishes an appropriation and nothing else — no grants, no fees, no revolving funds. For athletics, one document published both, once, and a records request produced the fund's own year-end reconciliation. That makes athletics a test case for a question that applies to the entire budget: how far is an appropriation from what a thing costs?

The answer, here, is very far.


The approach

In plain terms. We stopped asking what athletics costs and started asking who is paying. That meant separating three kinds of document that all use the word "actual", and only one of which is a record of money moving.

The evidence. Every document in the archive is now classified in data/document-basis.csv, generated by scripts/classify_document_basis.py:

typewhat it meanscount
ledgerthe accounting system — a figure exists because a transaction did10
restatementa prior year re-presented inside a document written by the party that spent it65
forwardproposed, requested, level service, balanced172
narrativemoney discussed, no figure table75

Of those ledger documents, exactly one reaches school budget lines on the general fund: district-budget/text/fy23-quarterly-budget-update.txt, covering one quarter of FY23. Everything else the school analysis rests on is restatement.

Three of the ten arrived after this document was written, on 17 June 2026, and they are the athletics revolving fund's own cashbook for FY2024, FY2025 and FY2026 — the first complete fiscal years of ledger data this project has held for anything touching school money. They are read in analyses/athletics-ledger.md, and several claims in the sections below are settled or sharpened there. The general fund still rests on one quarter of FY23.

This matters for athletics specifically because the two are not interchangeable, and the difference is visible on this very line — see §4 below.


1. The one document that shows both sides

In plain terms. Once, for FY19, the athletic director submitted a budget that listed every athletics line twice: once as money from the town, once as money from the fund the fees go into. It is the only document in the archive that does this. It shows that the town's athletics lines were never the whole cost.

The evidence. district-budget/docs/fy19-proposed-athletics-budget.pdf, off the district's own budget page, link live as of 2026-08-29, sha256 e0a7c5ba…. Titled Proposed FY19 MSHS Athletic Budget (Submitted to the Superintendent of Schools) AMENDED PROPOSED BUDGET.

Athletic Transportation appears on two consecutive lines — the appropriation, and the Chapter 658 revolving fund:

FYappropriatedrevolving 658totalfund sharebasis
201417,00030,08547,08563.9%actual
201521,60040,74262,34265.4%actual
201623,00033,30856,30859.2%actual
201723,00050,98673,98668.9%actual
201833,50027,45060,95045.0%budgeted
201924,97540,00064,97561.6%requested

In every year it reports as actual, the fund paid more of athletic transportation than the town did.

The same document totals the whole program:

FY14FY15FY16FY17FY18FY19
TOTAL GENERAL APPROPRIATION194,316224,799210,911222,695326,478307,931
plus TOTAL Revolving Fund 658108,147111,938113,819156,550103,00187,902
GRAND TOTAL ATHLETICS302,462336,738324,730379,245429,479395,833
Total Revenues (Fees & Gates)110,474140,748121,555109,351108,000108,000

Its own grand totals are $1 off its own two columns in FY14 and FY15 and exact in the other four years.

Credit where it is due, per rule 8. The district published this. It is the clearest account of how athletics is actually paid for anywhere in the record, and no document published since shows both sides. It is surfaced in the app for that reason.

And the district says the same thing in words. school-department-fy26-budget-overview lists "Revolving account offsets applied to personnel in local budget: Extended Day ($71,247), Facilities ($25,000)", and beside athletics: "156% line increase (reduced from Level Service with anticipation that athletic revolving may be enough to offset this reduction in the budget line)".

That is rule 11 in the district's own hand: the appropriation is set net of what the fund is expected to carry.


2. The netting swapped direction — it was not a withdrawal

In plain terms. People assume the town has been picking up costs the fees used to cover. That is half right. Transportation did move from the fund to the town — but officials and uniforms moved the other way at the same time, and they were about the same size. It was closer to a trade than a retreat.

The evidence.

FY19FY26
transportationrevolving fund, $40,000general fund, $127,550
officialsgeneral fund, $40,117general fund $0; fund pays ArbiterSports $59,400
uniformsgeneral fund, $8,000general fund $0; fund pays Prime Time Sports $25,421

In FY19 the general fund carried officials and uniforms together at $48,117 while the fund carried $40,000 of transportation. At the point of the trade the two sides were within about $8,000 of each other.

FY26 general fund figures are the FY26 FINAL BUDGET column of budget-workbooks/fy27-proposals.xlsx; ATHLETIC OFFICIALS and REPLACEMENT OF UNIFORMS are budgeted - from FY26 on. The fund vendors are budget-workbooks/school-funds-fy26.xlsx, sheet Athletics Revolving, A23.


3. The fund's share of athletics did not change

In plain terms. The fund pays about the same slice of athletics it paid seven years ago — roughly a fifth. What changed is which bills it pays, not how much.

The evidence.

FY19FY26
general fund athletics307,931518,334
athletics revolving fund87,902146,911
whole program395,833665,245
fund share22.2%22.1%

FY26 general fund is functions 3510 - Athletic Expenses + 3510 - Athletics Salaries from the FY26 FINAL BUDGET column. The fund figure is FY26 net expenditures from the year-end reconciliation.

What this does not show. Two observations, seven years apart, with nothing in the archive between them. Two points cannot show a line, and 22.2% against 22.1% could be coincidence. It is recorded because it contradicts an obvious story, not because it establishes a stable one.

The number that matters for the app. The whole FY26 athletics program is $665,245. Every athletics figure the app currently shows is the general fund portion.


4. What "athletic transportation actual" actually is

In plain terms. For years the reported spending on athletic buses came out exactly equal to the budget. That is not a coincidence and it is not sloppiness. The whole year's transportation is committed as a single purchase order at the start of the year, and the figure published later is that order — not a count of buses run.

The evidence. From the only ledger document that reaches school lines, fy23-quarterly-budget-update.txt, 11 November 2022:

S3066672 535016 TRANSPORTATION Original Budget 40,000.00 Revised Budget 40,000.00 Expended 0.00 Encumbrances 40,000.00 % Used 100.00

Nothing paid. The entire year committed. Regular transportation (535025) and special education transportation (535026) show the same shape in the same report.

Set against the restated actuals for the same line:

FYbudgetreported actualnote
201723,00023,000exact
201833,50033,500exact
201924,97536,975
202038,80138,795
202145,00045,000exact — FY21 books were not closed, excluded elsewhere
202245,00048,755
202340,00039,880ledger: $0 expended, $40,000 encumbered at Q1
202440,00040,000exact
202540,00087,822
2026127,55047,847 spent + 13,169 encumbered at Q3

Four of nine usable years land on the budget to the dollar — three of eight if FY21 is excluded, as it is everywhere else in this project because its books were not closed.

A possible explanation, offered as a hypothesis. The line is managed by lump-sum encumbrance and the figure later published as an "actual" is the liquidated purchase order. That would make an exact match the expected result rather than an anomaly. Nothing here tests it — we hold one quarter of one year of ledger data. What would settle it: the year-end MUNIS report for the school department, or account detail history for object 535016.

And note the same word doing two jobs. The Finance Committee memo for the same quarter reports "Total General Fund expenditures through March 31, 2026, were $36.845 million". The ledger for that period says $34,219,013.80 expended and $2,626,115.87 encumbered — which sum to $36,845,129.67. The memo reports committed money under the word for money paid out. That is the same conflation as the line above, one level up.


4a. The FY25 deficit — reported, corroborated in outline, not established

In plain terms. Several people said in 2025 that the athletics fee account had run into trouble, and that costs landed on the town budget as a result. The account's own year-end figures do not show that, but we do not hold the year they are talking about. This is the most likely explanation on offer and it is not yet a fact.

The evidence, all of it. Three references, in one six-month window:

School Committee, 3 September 2025, public comment — the only place the account is named:

"in the past 6 months or so there have been things that have come up, athletic revolving fund was running in a deficit, I was told over $100,000"

This is a resident reporting what she was told. It is not a district statement, and no document we hold contains the figure.

Finance Committee, 8 July 2025 — a committee member, on the record, not naming athletics:

"Ms. Lockwood ... emphasized the need for all revolving accounts to have a budget, even if they are not town meeting revolving accounts, to prevent negative balances from going unnoticed."

Corroborates that a revolving account went negative and was not caught. Does not say which.

School Committee, 12 March 2025 — the day the FY26 budget was approved, public comment from a resident identifying as a finance professional:

"Splitting everything into revolving funds is not a good way to manage finances. We need to lay out all revenues and all expenses."

What the fund's own figures say. The athletics fund opened FY26 at +$110,247.89 on 1 July 2025 — which is its closing balance for FY25. So at FY25 year-end the account was positive, not $100,000 down. And FY26 ended at +$152,280.91 after a $42,033 surplus.

These are not necessarily in conflict. A fund can run a deficit mid-year on cash flow — seasons are paid for before fees are collected — and close positive. It can also be made whole by a transfer. We hold the endpoint and not the path: there is no FY25 fund report in the archive, only FY26's, which reports FY25's closing balance as its own opening one.

On the sequence, offered as a hypothesis. The dates fit a story, and only a story:

whenwhat the documents show
12 March 2025FY26 budget approved. Athletic transportation goes 40,000 → 102,550, and the budget overview says it was "reduced from Level Service with anticipation that athletic revolving may be enough to offset this reduction in the budget line"
spring–summer 2025the deficit is reportedly discovered
8 July 2025Finance Committee raises negative balances going unnoticed
by 16 March 2026the FY26 final budget for the line is 127,550, up 25,000 from what was approved
30 June 2026fund closes at +152,281, having gained 42,033

What this does not show, and it is the important part. The large rebase — 40,000 to 102,550, a 156% increase — happened in March 2025, before the deficit was reportedly discovered, and the district's own stated reason for the number it chose was that it expected the fund to carry more, not less. So the deficit cannot explain the rebase; at most it explains the later $25,000. A cost shift caused by a drained account is a coherent reading of some of this and is contradicted by the timing of most of it.

What would settle it: the FY25 special revenue report or fund balance sheet for fund 1301 — one document, and the same records request that produced the FY26 one.


5. Is $127,550 defensible?

In plain terms. It looks indefensible against the old budget line and ordinary against what athletic buses actually cost. Both are true, because the old budget line was never the cost.

The evidence. No document in the archive states a justification for the size of the line. Every statement about it explains a reduction. Measured against each base we have:

basevalueratio to 127,550implied rate
FY17 all-in (approp 23,000 + fund 50,986)73,986×1.726.24%/yr over 9 years
FY14 all-in47,085×2.718.66%/yr over 12 years
FY25 reported actual (appropriation only)87,822×1.4545.24% in one year
FY24 reported actual (appropriation only)40,000×3.1978.57%/yr over two years
FY26 committed at Q361,016×2.09— spring still to run

The district reports a 7.6% Dee Bus rate increase for FY26. Six and a quarter percent a year, compounded from the FY17 all-in figure, lands on $127,550.

What this does not show. The 6.24% is solved for, not sourced — we found the rate that reaches the number, we did not find it in a document. That it falls near the one published rate increase is corroboration, not proof.


6. UNPROVEN — a citizen's workbook, and what it would mean if it holds

Nothing in this section is acted on anywhere. No figure here feeds the model, the app, or any other section of this document. It is recorded because it is the only evidence that bears on the central question, and because if it holds it points the opposite way from what this project has been publishing.

In plain terms. A resident filed a public records request and got three years of the athletics general ledger, plus the district's own sport-by-sport file. They built a spreadsheet from it. That spreadsheet says athletic transportation cost about $117,000 in FY24 — a year the town's budget recorded $40,000. If that is right, the town's line was never the cost, and everything this project has said about that line being over-budgeted is backwards.

What the document is

Athletics_v10.xlsx, sha256 63fc34d428ea09d9db8129597666e0de02adc84a315223028a0430c2c76780d1. Workbook metadata: single author, created and last modified 2026-07-04 17:35:35.

It is not a town document. It is a third party's analysis built on two things obtained under M.G.L. c.66 — the athletics GL for three years, and a sport-by-sport file the district already held. That makes it a fourth kind of source, outside the three in data/document-basis.csv: not ledger, not a district restatement, not forward, but a derived model built on a ledger we do not hold.

We hold a copy. It is not published in the archive, because it is someone else's work product and permission has not been asked.

What in it is measurement and what is arithmetic

Its own cell A2 declares the answer, and the arithmetic confirms it exactly:

Fall 43,446.06 x 1.065 = 46,270.05 workbook says 46,270.05 Winter 29,377.50 x 1.065 = 31,287.04 workbook says 31,287.03 Spring 18,242.50 x 1.065 = 19,428.26 workbook says 19,428.24

The 25/26 column is the prior year escalated 6.5%. So is 26/27. Only 23/24 and 24/25 are observations — two of its four year-columns are model output, and they must never be quoted as data.

The finding

FYgeneral fundfund / othertotalfund sharesource
201417,00030,08547,08563.9%FY19 split doc
201521,60040,74262,34265.4%FY19 split doc
201623,00033,30856,30859.2%FY19 split doc
201723,00050,98673,98668.9%FY19 split doc
201833,50027,45060,95045.0%FY19 split doc, budgeted
201924,97540,00064,97561.6%FY19 split doc, requested
2020–2023not published
202440,00077,555117,55566.0%workbook — unproven
202587,8223,24491,0663.6%workbook — unproven

Two documents with nothing in common, a decade apart, agree that the fund carried about two-thirds: 59.2%–68.9% across FY14–17, and 66.0% in FY24. Then FY25 is 3.6%.

Not a drift and not the trade described in §2 — a single-year transfer of roughly $77,000 of annual cost from fee payers onto the town.

What it would resolve

Three things this document could not otherwise explain, all resolved by the same fact:

  • FY25's $87,822 against a $40,000 budget. §4 records that as the one real miss on this line. It would not be a miss. It would be the town paying the whole bill for the first time, against a budget sized for its share.
  • FY24's actual being exactly $40,000. §4 offers lump-sum encumbrance as a hypothesis. This does not compete with it — it completes it. The appropriation was capped at its purchase order and the remaining $77,555 was carried elsewhere.
  • Why $127,550. §5 finds the line defensible against the all-in cost and absurd against the appropriation. This says the all-in cost was $91,066–$117,555 in the two observed years, and the line is the first one sized to it.

What it would mean for the app — and why that matters most

The FY27 line-item note on athletic transportation, shipped in the deployed v3 build, reads:

"Budgeted well above what athletics has ever actually spent. Actuals were $39,880 (FY23), $40,000 (FY24) and $87,822 (FY25)…"

If the workbook holds, $40,000 in FY24 was 34% of what athletics actually spent. That sentence takes the town's share, calls it what athletics spent, and concludes the budget is padded. It is rule 11 broken in one sentence, in public, and it accuses the district of over-budgeting a line that may be the only honestly sized one in the section.

Note the direction. notes/HANDOFF.md §2 says the app overstates athletics costs by double-counting fee revenue. On this evidence the app understates the cost of athletic transportation. Both cannot be the shape of the error, and neither is settled.

Why this is not acted on

  • It is one unsourced spreadsheet. We hold the analysis, not the ledger under it.
  • It is internally inconsistent. Summary!I41 (Spring 25/26 revenue) is 75,275.00, identical to the cent to I17 (Fall) — two seasons cannot match exactly. The season sheets' own Total rows are incomplete: Fall's 25/26 fee total reads 0, Spring's transportation totals read 0 in two years, and summing the sport rows gives different answers than the total rows do. Column layouts and header names differ across the three sheets — Total Received on Fall against Total Fees Received on Spring, Transportation at AR on Fall and AS on the others.
  • **We cannot tell which figures came from the GL and which from the district's sport-by-sport file.** They are fused in one workbook and have different reliability.
  • It does not say why the fund stopped paying. A fund that ran out looks different in a ledger from one that was redirected, and §4a's reported FY25 deficit is only one of the readings. The others are a deliberate policy change, or a change in what Town Meeting authorised the fund to spend on.

Why FY25 and not the seven years before — the fund never had slack

The obvious objection to the table above is that a fund which carried two-thirds of transportation for a decade does not simply stop. The FY19 document answers it: the fund was never comfortable. It ran within a few percent of break-even every year, and it has shed a major obligation once before under exactly this pressure.

Fund 658's own costs and revenue, from the FY19 split document:

FYcoachessecretarysuppliestransportfund costfees + gatesmargin
201445,27831,89430,085107,257110,474+3,217
201527,2215,24538,73040,742111,938140,748+28,810
201640,0927,79632,62333,308113,819121,555+7,736
201734,8158,59437,15650,986131,551109,351−22,200
201805,43727,11427,45060,001108,000+47,999
201905,59328,30940,00073,902108,000+34,098

The fund went negative in FY17, and in FY18 it dropped coaches entirely — from $34,815 to zero — and the margin went from −$22,200 to +$47,999. That is the same move as FY25, a decade earlier, in a document the district published itself.

And the workbook, if it holds, shows the same shape:

FYofficialstransportfund costfeesmargin
202451,57077,555129,125128,252−872
202550,6963,24453,940117,069+63,129

Officials cost the fund about $51,000 a year, and the general fund budgeted $0 for officials from FY24 on. So FY24 is the year the fund took on a new obligation roughly the size of its entire margin. It landed at −$872 — break-even to within a thousand dollars, on a $128,000 fund. FY25 it shed transportation and the margin returned.

So the answer to "why that year" is that nothing about transportation changed. What changed is what else the fund was asked to carry. A fund with no margin absorbs a new obligation only by dropping an old one, and this fund has now done that twice: coaches in FY18, transportation in FY25.

A possible trigger, offered as a hypothesis. FY24 is the first year in the grants record with no ESSER money — data/grants-history.csv shows ESSER running through FY23 and stopping, about half a million a year. The general fund was under pressure in exactly the year officials moved off it. Nothing here tests that, and the correlation is one year against one event. What would settle it: the FY24 general fund athletics detail showing where the officials line went, which is in the GL already requested.

And it reframes "drained". A fund sitting at −$872 on $128,000 of revenue is one late invoice or one slow collection month away from a visible negative balance. "The fund was drained" and "the fund was at break-even and given something new to pay for" are the same arithmetic described with different blame attached. The second is what the numbers show. Neither is established.

What would settle it

The raw GL, requested 29 August 2026: the general fund athletics org S3066672 (especially object 535016) and fund 1301, both as native export rather than PDF, plus the RevTrak receipts detail and the district's original sport-by-sport file. Recorded in notes/DATA-WANTED.md §3c.

If it arrives and holds, the first work is not to publish the new number. It is to stop the deployed note asserting the old one.


How to reproduce every figure in this document

Nothing here rests on a step that is not written down. Each source is named by its path in the published archive, its sha256, and — where a figure comes from a spreadsheet — the sheet and cell or column it comes from.

Run the verifier first. It recomputes every figure below from the sources and fails if one drifted:

python3 scripts/verify_athletics.py

The sources

filesha256 (first 16)what is taken from it
district-budget/docs/fy19-proposed-athletics-budget.pdfe0a7c5baa041112c§1, §2 — the FY19 split, all six years, both columns
budget-workbooks/fy27-proposals.xlsx94184d3b167a6e80§2, §3, §5 — FY26 general fund athletics; the transportation line
budget-workbooks/school-funds-fy26.xlsx2662ca779de6170d§2, §3, §4a — the fund's FY26 year-end reconciliation and vendors
munis-ledgers/fund-balances/special-revenue-fy2026-p09.xlsx4b9777d83c747c1c§4a — fund 1301 as the town books it
district-budget/docs/fy23-quarterly-budget-update.pdf6fb1e3a1b304e64d§4 — the only ledger view of a school line
munis-ledgers/expenses/glytdbud-expense-fy2026-p09-gf-all.pdf5875562be5ee615f§4 — the ledger behind the Finance Committee memo

Minutes cited in §4a: minutes/school-committee/2025-09-03-minutes-7385, minutes/finance-committee/2025-07-08-minutes-7295, minutes/school-committee/2025-03-12-minutes-7098.

Where each figure lives

§1, the FY19 split. Text extraction of the PDF, lines 16 and 17. The line labelled Athletic Transportation is the appropriation; the line labelled Athletic Transportation (685) is the revolving fund — (685) is a typo for (658), consistent with the same document's plus TOTAL Revolving Fund 658 on line 31. Column headers are on lines 4 and 5: FY14 FY15 FY16 FY17 FY18 FY19 over Actual Actual Actual Actual Budgeted Requested. Transcribed into model/athletics.py → SPLIT_REPORTING and rendered in the app.

grep -n 'Athletic Transportation' \ sources/district-budget/text/fy19-proposed-athletics-budget.txt

§2 and §3, FY26 general fund athletics. budget-workbooks/fy27-proposals.xlsx, sheet FY27 Budget Projection, column G (FY26 over FINAL BUDGET, cells G4/G5), summed over every row whose function header in column A begins 3510 — that is both 3510 - Athletic Expenses and 3510 - Athletics Salaries. Function headers are rows where column A matches ^\d{4}\s*-.

Read the workbook by cell reference, not by opening it. Nine columns are hidden — C, H, I, N, O, P, T, U, V — including C (FY23 ACTUALS), H (FY26 actuals to date) and I (FY26 encumbrances to date). They do not appear on screen. Our second copy, budget-workbooks/fy27-budget-projection-3-25-26.xlsx, is data-identical and hides a different set, so the two files show a reader different tables. data/document-basis.csv records the hidden set for every workbook in the archive.

§2 and §3, the fund. budget-workbooks/school-funds-fy26.xlsx, sheet Athletics Revolving. Vendors are a single text cell, A23. The expenditure categories are A19A22; note that A20 names transportation inside purchase of service. The roll-forward is B5B8.

§3, the FY19 programme totals. Lines 30–32 of the same text extraction. Its stated grand totals are $1 off its own two columns in FY14 and FY15 and exact in the other four years; the verifier asserts that rather than hiding it.

§4, the ledger view. Text extraction, the row beginning S3066672 535016. S3066672 is the athletics expense org; 535016 is the transportation object code. The same object appears under three other orgs in that report, which is why the org code matters.

§4, the memo's arithmetic. munis-ledgers/expenses/glytdbud-expense-fy2026-p09-gf-all.txt, the GRAND TOTAL line. Extracted by scripts/extract_town_ledger.py, which reconciles its output to that printed total before it will write.

§5, the implied rates. Solved, not sourced: the compound rate that carries each base to $127,550 over the years between. (127550 / base) ** (1 / years) - 1.

The classification behind the method

python3 scripts/classifydocumentbasis.py # writes data/document-basis.csv

Every document in the archive by what produced its figures — ledger, restatement, forward, narrative — each row quoting the raw header text the call rests on, with its line number or cell reference. The counts in "The approach" above come from it.

A caution about method, learned here

Every serious error in building this document was the same one: reading a rendering instead of the source. A concatenated header quoted as though the sheet said it. A hidden column read as though a reader could see it. A budget workbook's ACTUALS column described as an actuals document. A verifier that checked a sentence was present rather than that its count was right, and passed while the count was wrong.

So: quote cell references and raw text, never a rendered label; check what a reader actually sees, not only what the file contains; and make a check assert the number, not the prose around it.


7. Both sides, every year we can see either one

In plain terms. This is the whole picture in one place: what the town appropriated for athletics, and what the fee-funded revolving account paid, line by line, for every year either is visible. The blank stretch in the middle is the point — for four years nobody published the fund side at all.

The evidence. Generated from data/athletics-history.csv by scripts/extract_athletics_history.py. The FY14–FY19 reconstruction is checked rather than asserted: the itemised rows are summed against the document's own stated column totals, and five of six years tie to the dollar on each side. The two that do not are the document's own rounding — FY16 general by $2, FY17 revolving by $1 — and the script fails if any year is off by more than that.

General fund appropriation

FY14–FY19 from the FY19 athletics document; FY20–FY25 actuals from data/line-history.csv; FY26 is the FY26 FINAL BUDGET column.

lineFY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25FY26
Athletic Coaches114,636130,661120,646130,020163,146150,63691,601139,492145,991100,35146,733155,614159,444
Athletic Director48,00049,44090,00091,800103,75285,97790,20096,04474,406
Athletic Transportation17,00021,60023,00023,00033,50024,97538,79545,00048,75539,88040,00087,822127,550
Athletic Officials39,87540,46938,99738,05939,22140,11720121,14847,967
Athletic Trainer51,66061,80063,90066,200
Athletic Dues & Fees9,5199,7599,75110,78212,49912,52922,29020,62320,78922,25118,48631,99520,000
Special Detail/Athletic Events4445,5591391,5925,9005,3449,7735,0005,8973,7055,80772,8647,100
Athletic Insurance5,9905,9905,9905,9905,9905,9905,9905,9908,9808,9808,9808,9809,000
Athletic Equipment/Reconditioning3,0654,3615,2651574,5004,5005,89810,0004,8971,9327,6027,19010,000
Athletic New Equipment1,4405,4565,1515,8506,4004,4985,8505,1885,6485,6739,0556,000
Athletic Replacement of Uniforms3,7874,9601,6697,9447,8728,00010,5607,8721,690
Athletic Secretary20,407
Freshman & Ms Coaches14,415
Athletic Expenses/Supplies11,243834
Unified Sports Coach1,2003,9251,200
Unified Sports,Track/Basketball Coach3,812
total194,316224,799210,913222,695326,478307,931292,049356,700395,940320,384285,281533,464518,334

Chapter 658 revolving fund — where the fees go

FY20–FY23 is blank because nothing was published, not because the fund paid nothing. FY24 and FY25 carry only two lines, both from the unproven workbook of §6 — the fund certainly paid for more than officials and transportation in those years. FY26 is the fund’s own year-end reconciliation.

lineFY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25FY26
Athletic Transportation30,08540,74233,30850,98627,45040,00077,5553,244
Athletic Expenses/Supplies31,89438,73032,62337,15627,11428,309
Athletic Coaches45,27827,22140,09234,815
Purchase of service (officials, uniforms, transportation, ice time, dues)113,602
Athletic Officials51,57050,696
Track and Field Payment25,00040,000
Athletic Secretary5,2457,7968,5945,4375,593
Salaries (4 revolving-fund staff)30,514
Field upgrades / turf10,000
Athletic New Equipment8903,0004,000
General supplies2,795
total108,147111,938113,819156,551103,00187,902129,12553,940146,911

Both sides, and the distribution

FY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25FY26
general fund194,316224,799210,913222,695326,478307,931292,049356,700395,940320,384285,281533,464518,334
revolving fund108,147111,938113,819156,551103,00187,902not publishednot publishednot publishednot published129,125 partial53,940 partial146,911
all in302,463336,737324,732379,246429,479395,833≥ 292,049≥ 356,700≥ 395,940≥ 320,384≥ 414,406≥ 587,404665,245
fund share of all-in36%33%35%41%24%22%≥ 31%≥ 9%22%
fund revenue (fees, gates)135,767121,456108,551108,000108,000188,944

Read the blanks as the finding. FY20–FY23 shows no fund side because no document published one, not because the fund paid nothing — it certainly did. FY24 and FY25 carry two lines only, both from the unproven workbook. So the all-in row is a floor for six of thirteen years, and the fund's share is understated wherever it is marked ≥.

What the visible years show. Where both sides are published — FY14–FY19 and FY26 — the fund carries between 22% and 41% of all-in athletics, and it is the composition that moves rather than the share: coaches and supplies early, transportation throughout, and by FY26 officials, uniforms and video. The one thing that does not appear on the general fund side in any year is the fund itself.


Conclusions

  1. **An athletics appropriation is not what athletics costs, and the district has said so twice** — once by publishing both columns in FY19, once in words in the FY26 budget overview. Rule 11 is not a suspicion about this line. It is documented.
  1. The whole FY26 athletics program is $665,245, of which the general fund carries $518,334 and the fee-funded revolving fund carries $146,911.
  1. The fund's share is unchanged across the only two years we can compare — 22.2% in FY19, 22.1% in FY26. The town did not absorb a retreating fund. Transportation and officials/uniforms traded places at comparable size.
  1. $127,550 is not the outlier it appears to be, once measured against the all-in cost rather than against an appropriation that excluded the fund's larger share.
  1. The reported actuals on this line are encumbrances, not payments, at least in the one year we can see. Any rate measured off them measures commitment, not spending.
  1. No document in the archive names a carrier beside a dollar figure for athletics. The only actual payment to Dee Bus recorded anywhere is $731.50 for a single field trip, in School Committee minutes of 4 March 2026.

Open questions

On funding

  • Whether the general fund transportation line is still net of anything today. The FY26 fund's unnamed purchase-of-service residual is $4,099, which caps any bus payment it could be making — but that is a ceiling, not a measurement.
  • When transportation moved from the fund to the appropriation, and whether in one step. Nothing between FY19 and FY25 shows the split.
  • Whether the FY19 split format continued and simply stopped being published. Nine department-level submissions exist for FY19 and none for any other year.
  • Whether the athletics fund ran a deficit in FY25, and how large. Reported in public comment as "over $100,000" and corroborated in outline by the Finance Committee, but the fund closed FY25 at +$110,248 and no FY25 fund report exists in the archive. See §4a. This is the single most likely explanation for a cost shift onto the town and it is not established. The FY25 special revenue report for fund 1301 would settle it.

On cost

  • What athletic transportation actually cost in any year. Every figure we hold is a budget, an encumbrance, or a restatement of one of those.
  • The FY26 year-end figure for the line, which would settle whether $127,550 was right.

On fees — worked in sped-and-funds.md §2.2, restated here as open:

  • Why the fund collected $188,944 net in FY26 when the app's model of the same fee produces $130,129. Implied per participation is $287.82 high school and $248.60 middle school, against a stated first-child fee of $250. Either participations are undercounted or there are sport surcharges we do not hold.
  • Whether the $152,281 fund balance is committed to anything. It is a balance, not a windfall, and revolving spending is capped by annual Town Meeting authorisation.

The one request that would answer the most

The vendor warrant — the list of bills the Select Board approves for payment, itemised by vendor. It is a public record produced roughly weekly, and it is the only document that would put a carrier's name beside an amount. Failing that, the account detail history for object 535016.


What this changes in the app

Not yet done. In order:

  1. model/athletics.py asserts FEE_REVENUE_IN_BUDGET = False on the reasoning that fees flow through revolving accounts so the budget figures are gross. The mechanism is the opposite: fees pay for officials and uniforms, and those lines are budgeted $0 in the general fund. The figures are net because the cost never appears.
  2. The fee curve's base should be the whole program, $665,245, not the general fund portion — and it must count the $146,911 the fee already pays.
  3. estimatedFy26Revenue is 31% below what the fund reports collecting. The $960 self-funding fee and feeIncreaseValue are calibrated off it.
  4. FEE_ACCOUNTING infers that athletics fees sit under M.G.L. c.71 §47 from their absence from the §53E½ warrant article. The town books the fund as `1301 CHAPTER 658 REVOLVING FUND`. The inference can be replaced with the fact.
  5. Conclusion 5 — "athletics cannot pay for itself once you put the buses back" — rests on all of the above and should not be restated until they are fixed.

Where this came from

Nothing on this page is an official document. It was written here, from documents the town and district published and from records obtained by request, and it has not been reviewed or endorsed by the Town of Lunenburg, the School Committee, the Finance Committee or Lunenburg Public Schools. The report index says the same thing at more length, and lists every analysis alongside the data underneath it.

This page renders the document itself, which is the source of truth: there is one copy of every sentence and every figure here, not a transcription of one. Every figure in it is recomputed from the underlying data by python3 scripts/verify_athletics.py, which fails rather than warns.

What changed

Version 14 — updated September 7, 2026