The money

The only programme where you can see both sides of the money.

The town appropriates. Families pay a fee into a separate fund. That fund spends. For every other line in the budget you can see the first of those three and nothing else — which is why what athletics shows about the gap between an appropriation and a cost matters far beyond athletics.

35%
of what the district’s own workbook says the sports cost was covered by the town’s comparable budget lines in FY24
$665,245
the whole FY26 athletics programme — $518,334 appropriated and $146,911 spent by the fee-funded fund
$304,046
moved into the fund across FY24–FY25 on 5 journal entries whose whole description is per memo. We hold none of the memos
649
participations in FY26, from 675 in FY24. One child in three seasons is three of these

What this establishes

Four claims a resident could repeat at a meeting. Each is recomputed from the database when this page is built, and each names the table it came out of.

0135%

An athletics appropriation is not what athletics costs — and here that is a measurement, not a warning.

In FY24 the town’s comparable athletics lines came to $124,301 against $351,643 that the district’s own sport-by-sport workbook totals for the same categories. A further $160,980 sat on general fund lines the workbook does not track at all. athletics_history joined to athletics_by_sport on comparable categories, FY24 only.
0266%

Two-thirds of the bus bill was paid outside the town’s budget in FY24. A year later it was 3.6%.

Athletic transportation cost $117,555 in FY24, of which the town’s line carried $40,000. In FY25 the cost fell to $91,066 and the town’s line rose to $87,822. The FY26 line is $127,550. athletics_history both sides, checked against athletics_by_sport’s own transportation total — the two budget sides sum to it exactly in both years.
0365%

Most of what came into the fund in FY25 was four journal entries nobody outside Town Hall can read.

$254,121 of $390,300 arrived as general-journal entries described only as an expense adjustment made per a memo. Take them out and the year closes at -$122,882. That is arithmetic on the town’s own rows, not a balance the town reported. fund_1301_cash_journal, src = ‘GEN’.
04−3.9%

Participation is roughly flat over three years while the fee it pays has risen 30%.

675 participations in FY24, 649 in FY26. Over exactly those years the high-school fee a first child pays went from $250 to $325, and is $400 in FY27 on a source we do not hold a copy of. These are two measurements side by side and nothing here connects them — three years is not enough to see a response to a price, and the fee rose after most of the fall. athletics_by_sport where metric = ‘Total Athletes’, and athletic_fee_schedule.

Three figures here differ from the written analyses. These are the recomputed ones.

Every number on this page is derived from the database at build time. The reports are prose, and prose was true on the day it was written. Where they disagree, this is what the data now says — and what moved underneath it.

  • Whether the middle school blended fee exceeds its own top tier, FY2026. athletics-ledger.md §8. That section reports the middle school half as unresolved, because no document it held gave a 2025-26 middle school rate and the blended rate therefore exceeded the only rate stated. The fee register now carries one — $275, from School Committee minutes of 26 February 2025 — and the blended rate recomputed below comes in under it, which is what a blend of full pay, reduced fees and waivers has to do. On that figure the anomaly does not arise.

Both sides, every year either one is visible

The town’s appropriation and what the fee-funded revolving fund spent, added only in the years both were published. 4 of 13 years show no fund side at all — and that is a gap in the record, not a fund that spent nothing.

what the town appropriatedwhat the fee-funded fund spentfund side never published
FY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25FY26$0$200k$400k$600k$800k
Athletics, both sides of the money, by fiscal year
YearTown appropriationFee-funded fundWhole programmeFund’s share
FY14$194,316$108,147$302,46336%
FY15$224,799$111,938$336,73733%
FY16$210,913$113,819$324,73235%
FY17$222,695$156,551$379,24641%
FY18$326,478$103,001$429,47924%
FY19$307,931$87,902$395,83322%
FY20$292,049not published≥ $292,049
FY21$356,700not published≥ $356,700
FY22$395,940not published≥ $395,940
FY23$320,384not published≥ $320,384
FY24$285,281$129,125 (partial)≥ $414,406
FY25$533,464$53,940 (partial)≥ $587,404
FY26$518,334$146,911$665,24522%

FY20–FY23 is blank on the fund side because no document published one. FY24 and FY25 carry two lines only, drawn paler, and the fund certainly paid for more than two things in those years. So the whole-programme figure is a floor wherever it is marked “≥”. The fund’s REVENUE is not on this chart at any height: it is a third quantity, and a published figure of “$335,856 through the revolving fund” was once revenue and spending added together.

What this does not show

Whether the fund’s share is stable. It is 22% in FY19 and 22% in FY26 — but there is nothing in the archive between them on the fund side, and two points cannot show a line. What did change is the composition: coaches and supplies early, transportation throughout, officials and uniforms by FY26.

One bill, two funds, and the year it moved

Athletic transportation is the clearest case on the page, because for two years we can see the whole cost and how it was split. In FY24 the town’s line was $40,000 against a $117,555 bill. In FY25 the fund’s share fell to $3,244.

paid from the town’s budgetpaid by the fee-funded fundfund side never published
FY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25FY26$0$35k$70k$105k$140k
Athletic transportation, by fund, by fiscal year
YearTown budget lineFee-funded fundOutside the budget
FY14$17,000$30,085
FY15$21,600$40,742
FY16$23,000$33,308
FY17$23,000$50,986
FY18$33,500$27,450
FY19$24,975$40,000
FY20$38,795not published
FY21$45,000not published
FY22$48,755not published
FY23$39,880not published
FY24$40,000$77,55566%
FY25$87,822$3,2443.6%
FY26$127,550not published

What this does not show

Why the fund stopped paying. Three orderings fit the same rows: the town took the cost on because the fund could not carry it; the fund was relieved of it as policy and the cash consequence followed; or both follow from a third decision recorded in the memos. Nothing in these files distinguishes them.

That the FY26 fund paid nothing for buses. The fund’s own year-end report bundles transportation inside one line reading purchase of service (officials, uniforms, transportation, ice time, dues), so the FY26 fund bar here is not published separately rather than zero.

What the money actually buys

The district’s own sport-by-sport workbook is the only document that puts a cost against a category. Its columns sum to its own printed total to the cent in both years — the generator refuses to publish this chart if they stop doing so, because then the split would be ours rather than the document’s.

CoachesTransportationOfficialsEverything else
$0$90k$180k$270k$360kFY24FY25
What the sports cost, by category, from the district’s own workbook
YearCoachesTransportationOfficialsEverything elseTotal
FY24$127,088$117,555$51,570$55,429$351,643
FY25$91,589$91,066$50,696$50,371$283,721

Two years, FY24 and FY25 — the only years the workbook observes. Its two later columns are the prior year escalated 6.5% and are model output, not data, so they are not drawn.

Coaching, which is the biggest single thing athletics buys

Three different measurements, on one axis and never added: the coaching lines in the town’s budget, coaching paid by the fund in the years the fund reported it, and what the district’s workbook says coaching cost.

coaching lines in the town’s budgetcoaching paid by the fundwhat the district’s workbook says coaching cost
FY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25FY26$0$45k$90k$135k$180k
Coaching, by source of money, by fiscal year
YearTown budgetFundWorkbook cost
FY14$114,636$45,278
FY15$130,661$27,221
FY16$120,646$40,092
FY17$130,020$34,815
FY18$163,146
FY19$150,636
FY20$92,801
FY21$143,417
FY22$147,191
FY23$100,351
FY24$46,733$127,088
FY25$155,614$91,589
FY26$177,671

What this does not show

Who was on the fund’s payroll. The cashbook shows $121,347 of payroll run through the fund in FY24 and carries no name, no position and no object code on a payroll row. The workbook attributes $127,088 of coaching cost to the same year, and the general fund also carried coaching lines that year. The two do not add up and the ledger cannot say why.

That a line moving means people. A budget line is dollars. It is never a count of coaches, and the town publishes no coaching headcount.

What a season costs, per player

The workbook prints a cost for each sport and prints a headcount beside it, and never divides one by the other. This division is ours. In FY25 it runs from $1,298 a participation for Ski Team down to $46 for Unified Track ($100), against a first-child fee of $250. Across the whole programme it is $521 in FY24 and $424 in FY25.

cost per participationwhat one family paid that year
$0$350$700$1,050$1,400Ski TeamHS Basketball -GirlsFootballIce Hockey - GirlsHS BasketBall -BoysGolfGirls SoccerBoys CCIce Hockey - BoysField HockeyIndoor Track -BoysBoys SoccerIndoor Track -GirlsCheerGirls LaxGirls CCSoftballBaseballField Hockey(MS)Basketball - Girls(MS)Basketball - Boys(MS)Cross Country (MS)Unified Basketball$100Boys LaxSoftball (MS)Boys TrackTrack (MS)Girls TrackUnified Track($100)$1,298$1,110$1,075$1,024$874$704$574$541$531$465$455$447$392$363$337$308$290$289$287$265$221$213$158$147$101$67$65$63$46

The dashed rule is the high-school fee a first child paid that year — $250.

Cost per participation, by sport
SportSeasonParticipationsCostPer participation
Ski TeamWinter10$12,984$1,298
HS Basketball - GirlsWinter23$25,535$1,110
FootballFall39$41,920$1,075
Ice Hockey - GirlsWinter5$5,121$1,024
HS BasketBall - BoysWinter27$23,603$874
GolfFall16$11,266$704
Girls SoccerFall34$19,522$574
Boys CCFall9$4,866$541
Ice Hockey - BoysWinter39$20,723$531
Field HockeyFall22$10,227$465
Indoor Track - BoysWinter25$11,363$455
Boys SoccerFall35$15,629$447
Indoor Track - GirlsWinter29$11,363$392
CheerFall18$6,535$363
Girls LaxSpring22$7,407$337
Girls CCFall15$4,614$308
SoftballSpring26$7,540$290
BaseballSpring25$7,221$289
Field Hockey (MS)Fall27$7,760$287
Basketball - Girls (MS)Winter15$3,976$265
Basketball - Boys (MS)Winter18$3,976$221
Cross Country (MS)Fall21$4,471$213
Unified Basketball $100Fall19$2,996$158
Boys LaxSpring29$4,253$147
Softball (MS)Spring12$1,214$101
Boys TrackSpring34$2,264$67
Track (MS)Spring44$2,853$65
Girls TrackSpring32$2,021$63
Unified Track ($100)Spring11$501$46

What this does not show

That the fee is meant to cover a sport’s cost. It is not, and never has been: the fund pays for some categories and the town pays for others, and which is which has changed twice. A sport above the dashed rule is not a sport being subsidised more than one below it — the rule is a fee, and the bar is a cost, and no document maps one onto the other per sport.

Cost per student. These are participations. One child playing three seasons appears three times, so nothing here divides by a number of children, and the town publishes no unduplicated athlete count.

Who plays — on its own terms, not as a budget input

Participations by season and level, for the three years the district’s workbook covers. Three years is short. It is also more forward visibility than the boards in this town currently use, so it is drawn — with the span on the chart.

FallWinterSpring
FY24FY25FY260200400600800

FY24–FY26 — three years, which is the whole of what the district’s workbook covers. 675 participations to 649: −3.9%.

Participations by year, level and season
YearFallWinterSpringHigh schoolMiddle schoolAll
FY24252187236560115675
FY25255179235532137669
FY26257182210533116649

4 rows in the workbook are negative — out-of-district athletes subtracted back out, -44 across the three years, all of them in Winter and Spring. They are counted the way the sheet counts them, which means a season total is a net figure and not a headcount of bodies.

What this does not show

How many children play sports. Two town documents give 593 and 649 for the same year and count different things — one counts fee categories, the other counts participations by sport. They do not reconcile and must not be added. Neither publishes distinct students.

Who pays, and who does not

Every participation in the workbook falls into a fee category. These counts are summed from its rows: the sheet’s own printed totals for these columns are dollars rather than counts, so the row sum is the only reading that means what the column heading says.

paid the full feesecond-child ratethird-child ratefee waived entirelyin none of the four columns
0200400600800FY24FY25
How each participation’s fee was paid
Yearpaid the full feesecond-child ratethird-child ratefee waived entirelyin none of the four columnsAll
FY245056676433675
FY255165678010669

The reduced-fee columns are deliberately absent. HS Red Fee totals 213 in FY24 and 662.5 in FY25 — it is dollars in one year and something else in the other, and a column whose meaning cannot be stated is not a column that may be summed. That is what the grey residual is: participations in none of the four countable columns.

What a family pays, and when it was set

The first-child fee by level and season, each figure carrying the document that set it. FY26’s high-school rate was priced at the previous year’s figure on this site for months, because the source stated rates and never stated a year — which is why the register records the date a rate was set beside the rate.

high school, first childmiddle school, first child
FY24FY25FY26FY27$0$100$200$300$400$250$250$325$400
The athletic fee, by level and season
SeasonHigh schoolMiddle schoolSet on
2023-24$250$200not recorded
2024-25$250$200not recorded
2025-26$325$2752025-02-26
2026-27$4002026-08

What a participation actually paid, FY26

$306

high school — $162,871 of net user fees over 533 participations, against a stated first-child fee of $325. Below the top tier, which is what a blend of full pay, reduced fees and waivers has to be.

$225

middle school — $26,074 of net user fees over 116 participations, against a stated first-child fee of $275. Below the top tier, which is what a blend of full pay, reduced fees and waivers has to be.

Rule 11, pointing the other way. What the fund banked is already net of the payment processor’s charge, so a fee model calibrated on it is not a model of what families were asked for.

The fund’s own cashbook — the only ledger in the archive

277 postings across 3 years, with dates, warrant numbers and the clerk’s own comments. Every other fund in the town — and the whole school general fund — is visible to this project only as a budget document restating itself. That is why this one page is the control case for how far the money can be followed anywhere.

closing cash, as the ledger chainswhere it would close without the “per memo” entries
FY24FY25FY26-$140k-$70k$0$70k$140k
The athletics revolving fund’s cash, by year
YearOpenedInOutClosedWithout the memos
FY24$137,846$213,151-$317,004$33,993-$15,932
FY25$33,993$390,300-$293,054$131,239-$122,882
FY26$131,239$171,248-$171,154$131,333$131,333

The chain is the town’s, not ours: each year’s closing cash is checked against the opening balance the town printed for the next, and it ties to the cent in all 3 years. FY26 stops on 12 June and carries no year-end entries, so it is not a closed year.

The 5 entries, exactly as the ledger writes them

effectivepostedjournalreferenceamountcomments
2024-06-302024-09-181576ADJ EXP$49,925ADJ PER MEMO 08/12/24
2025-02-122025-02-12157ADJ EXP$1,283PER MEMO 01/30/25
2025-05-022025-05-0654ADJ EXP$113,559PER MEMO 05/02/25
2025-06-302025-07-02709ADJ EXP$19,271PER MEMO 7/02/25
2025-06-302025-08-271339ADJ EXP$120,009PER MEMO 08/20/2025

Journal 1339 is effective 30 June 2025 and was posted 27 August 2025 — after the fiscal year closed, and after the FY26 budget was voted. That is the general property worth carrying away from this page: when a budget document prints an “actual” for a prior year, that figure may have been adjusted by a memo months afterwards, and the document will not say so.

What this does not show

What the entries were for. An entry raising cash in a fund and labelled as an expense adjustment fits at least three readings: expenses charged here and later moved elsewhere; a transfer in from another fund; a correction of charges posted to the wrong account. Those are different facts about the world and identical facts on the page.

That the fund was overdrawn on any date. Ordering backdated rows by effective date puts it below zero for months, but that ordering is ours. MUNIS backdates, and rows sharing an effective date have no defined order.

Who was paid. The vendor field is populated on receipts and empty on 171 of 173 disbursement rows. Warrant numbers are there, so the warrants themselves would name the carriers.

FY24, category by category — rule 11 as a measurement

The comparison the whole page turns on, taking only the categories the workbook and the budget both name. Everything outside them is reported separately rather than folded in.

FY24 athletics: the district’s workbook against the town’s comparable budget lines
CategoryWorkbook costTown budgetOutside the town’s budget
Officials$51,570$0$51,570
Coaches$127,088$46,733$80,355
Transportation$117,555$40,000$77,555
Uniforms$16,294$0$16,294
Everything else matched$39,136$37,568$1,568
Total$351,643$124,301$227,342

A further $160,980 sat on general fund athletics lines with no counterpart in the workbook at all — director $90,200, trainer $61,800, insurance $8,980. Adding those to one side of a comparison the other side cannot see is precisely the error this page is about, so they are named here instead.

What this does not show

That the district hid anything. The fund is a Chapter 658 revolving fund; its purpose is to hold fee revenue and spend it, and the district described the arrangement in its own budget overview — beside athletics, in writing, as a line reduced “with anticipation that athletic revolving may be enough to offset this reduction”. Rule 11 is documented here, not suspected.

That 35% generalises. One year, one programme, comparable categories only. Nothing here measures anybody else’s share, and the workbook is a departmental operating record rather than a ledger.

What this still cannot answer

These are rows in the gap register, not observations made on this page. A limit written in one paragraph of one page is invisible to everybody who did not read it, so it lives in money_gaps, loads into the database and is published at /what-we-cannot-answer.

money out

What any special revenue fund bought

no expense report exists for these funds · purpose is presumed, never observed

document wanted

`glytdbud-expense` for the special revenue funds

The identical report the town already runs for the general fund and for each of the four enterprise funds, pointed at funds 13xx/22xx/26xx–29xx instead.

Closed by: Turns every restricted edge above from presumption into traced fact — athletics, lunch, circuit breaker, extended day, and every grant.

document wanted

DESE End of Year Financial Report

Published by the state.

Closed by: Separates district spending by FUND, which is the one thing the town’s budget documents never show.

people

Which fund pays which post

This is the load-bearing one. The rosters name people and the budget names dollars, and nothing published joins them to a funding source. So a paraprofessional line rising cannot be distinguished from a grant that was paying for those posts ending — which is exactly what the special education escalator rests on.

Closed by: DESE's End of Year Financial Report, which separates spending by fund.

money out

What the four `ADJ EXP` journal entries moved, and from where

$254,121.18 — 65% of everything that reached the athletics revolving fund in FY2025 — arrived on four general-journal entries whose entire description is an expense adjustment made per a memo. An entry raising cash in a fund and labelled as an expense adjustment fits at least three readings: expenses charged here and later moved elsewhere, a transfer in from another fund, or a correction of charges posted to the wrong account. Those are different facts about the world and identical facts on the page, and the same shape of entry could be adjusting any fund in the town without either budget document showing a trace.

Closed by: the five memos the ledger names, dated 08/12/24, 01/30/25, 05/02/25, 07/02/25 and 08/20/2025.

money out

Whether a general fund athletics line is net of the revolving fund

In FY2024 the town’s comparable athletics lines came to $124,301 against $351,643 the district’s own sport-by-sport workbook totals for the same categories — so the appropriation covered 35% of the cost. That is measurable for FY2024 and FY2025 only, because those are the only years anybody published both halves. For every other year, and every other programme, a line that rose because the cost rose looks exactly like a line that rose because a fund stopped paying part of it.

Closed by: the MUNIS `Account_Detail` export for the general fund athletics orgs S3066672 and S3066671, all object codes.

people

How many children play sports

Two town documents give 593 and 649 for the same year and count different things: one counts fee categories, the other counts participations by sport, and a participation is not a child — one student playing three seasons is three of them. Some workbook rows are negative, subtracting out-of-district athletes back out, so a season total is a net figure rather than a headcount of bodies. Nothing published is an unduplicated count.

Closed by: an unduplicated athlete roster, or a participation report that states whether it counts students or participations.

Where every figure on this page came from

Written by scripts/build_athletics_charts.py from sources/data/lunenburg.db — athletics_history, athletics_by_sport, athletic_fee_schedule, fund_1301_cash_journal, money_gaps, at build time. It refuses to write at all unless four things hold: the workbook’s cost columns sum to its own printed total for every year; the fund’s cash chains from each year’s closing to the next year’s printed opening balance; every series has rows in it; and no revenue row reaches a spending total. A join that matches nothing looks exactly like data that is absent, which is why each of those is an assertion rather than a comment.

Both sides, by year
athletics_history — 13 years
Costs and participation
athletics_by_sport — 33 sports, 3 years
The fee schedule
athletic_fee_schedule — 31 rows
The fund’s cashbook
fund_1301_cash_journal — 277 postings

Every table above is downloadable as itself: /data/athletics.json is exactly what this page reads.

The reasoning, at length

This page draws two written analyses. It does not replace them: the argument, the sources, the sha256 of every document and the alternatives that fit the same data are there.

Why a 1.7% programme has its own page

It is not a driver of the budget gap and never will be — a line matters in proportion to its share of spending times how far its growth exceeds the levy cap, and athletics fails that test on the first term. It is here because it is the only place the mechanism can be watched: a programme whose cost was more than twice its appropriation, costs moving between funds by a memo that appears in neither budget document, and the change landing after the year had closed. Every one of those could be true of a line that does drive the gap, and for those lines there is no cashbook to look at.

What changed

Version 12 — updated September 7, 2026