Red Hook WatchIndependent Community Resource

Does rainfall drive WWTP sludge pumping?

active updated 2026-05-05
Village/Issues/sludge-cost-overrun
FY 25-26 budgeted $5,500 for WWTP sludge removal; the projected actual is $60,837. The operator describes the extra spend as emergency rainwater pump-outs. Is that consistent with the data?

Recommendation

Probably yes — but the deeper problem is that the Village WWTP looks hydraulically undersized. On wet days the plant’s daily flow stops rising at roughly 0.055 MGD — its SPDES design number — no matter how much more it rains. That flat ceiling is the signature of a plant running out of throughput, with the excess inflow diverted to the equalization tank and trucked away. The pump-outs are most consistent with being the release valvefor that constraint, not a discretionary activity. If so, the $60,837 isn’t an operator billing problem — it’s the running cost of an inflow & infiltration (I&I) problem, which is a capital matter.

The Board should treat this as a capacity question, not just an invoice-approval question, and should still require a per-event cause record from the operator (what triggered the pump, what was being drawn down, the EQ-tank level before and after). The cost framing is the same — the village is paying ~$300/kgal — but the fix is to address the inflow, not to second-guess each haul.

The cost question

From the QuickBooks ledger, June 2025 through March 2026: 29 sludge-removal transactions totaling roughly $107,000. Of those, 16 are categorized “emergency” and 4 “routine.” Emergency rate ≈ $323/kgal; routine rate ≈ $194/kgal. The FY 25-26 adopted sewer budget assumed $5,500 for the full year; the projected actual is $60,837 — a 10× overrun, with a mid-year amendment of $5K already approved.

The operator’s memos on the emergency invoices repeatedly describe the pumps as “EQ tank pump-down” or “sewer plant pump” — language consistent with drawing down the equalization tank when the plant can’t process inflow fast enough. If that’s the mechanism, the trigger should be antecedent rainfall.

Q: Can we just check whether pump-outs follow rainy weather?

Tempting, but the dates don’t support it. The dates we have for pump-outs are QuickBooks invoice dates, not the dates the pump actually ran. Where a memo records the real event date, it often differs from the invoice date by days to a month, and several invoices bundle two or three separate pumps under one date. So lining pump-out “dates” up against rainfall mostly measures the vendor’s billing cycle, not hydraulics.

For reference, the chart below compares antecedent rainfall on invoice dates against all other days. It does show pump-out invoices landing on drier-than-typical dates — but because of the billing-date problem we treat that as suggestive at most, not as evidence about when the plant was actually under load.

0.001.02.03.0Cumulative rainfall in the 7 days before (in)Pump-out days (n=25)2025-06-26 4,980 gal · emergency Rain in prior 7d: 0.35"2025-07-02 4,000 gal · emergency Rain in prior 7d: 0.02"2025-07-08 6,000 gal · routine Rain in prior 7d: 1.09"2025-07-09 16,000 gal · routine Rain in prior 7d: 1.09"2025-07-28 6,000 gal · routine Rain in prior 7d: 0.19"2025-08-11 4,000 gal · routine Rain in prior 7d: 0.09"2025-08-18 5,000 gal · emergency Rain in prior 7d: 0.45"2025-08-20 4,000 gal · emergency Rain in prior 7d: 0.45"2025-08-28 4,000 gal · unknown Rain in prior 7d: 0.68"2025-09-04 4,000 gal · unknown Rain in prior 7d: 0.01"2025-09-19 11,000 gal · emergency · plant: old Rain in prior 7d: 0.00"2025-10-15 18,000 gal · emergency · plant: old Rain in prior 7d: 2.42"2025-11-21 25,000 gal · emergency Rain in prior 7d: 0.40"2025-12-04 5,000 gal · emergency Rain in prior 7d: 0.68"2025-12-10 5,000 gal · unknown Rain in prior 7d: 0.57"2025-12-12 23,000 gal · emergency Rain in prior 7d: 0.21"2026-01-03 18,500 gal · emergency · plant: new Rain in prior 7d: 1.35"2026-01-05 4,500 gal · unknown · plant: new Rain in prior 7d: 0.57"2026-01-15 4,500 gal · unknown Rain in prior 7d: 0.35"2026-02-05 4,500 gal · unknown Rain in prior 7d: 0.01"2026-02-11 6,000 gal · unknown Rain in prior 7d: 0.08"2026-03-18 4,000 gal · emergency · plant: new Rain in prior 7d: 1.31"2026-04-03 6,500 gal · unknown · plant: new Rain in prior 7d: 1.04"2026-04-07 20,000 gal · emergency · plant: old Rain in prior 7d: 1.17"2026-04-22 17,000 gal · unknown · plant: both Rain in prior 7d: 1.66"Other days (n=278)
Pump-out days median: 0.45 (IQR 0.191.09″) · Other days median: 0.64 (IQR 0.191.20″)
Mann–Whitney U = 3179; two-sided p = 0.481 (no significant difference at α = 0.05) · 4 pump-outs excluded (window crossed missing precip days)
emergencyroutineunknownfee

Rather than lean on unreliable event dates, the rest of this page asks a question that needs no pump-out dates at all: does the plant’s own flow show it running out of capacity when it rains? If it does, the pump-outs have an obvious structural explanation regardless of exactly when each one was billed.

Q: Does rainfall drive plant flow?

At the Village WWTP, yes — weakly but coherently. The heatmap below tests every (start, end) cumulative rainfall window between days[d − start] and day[d − end] and colors each cell by its Pearson correlation with flow on day d. The right grid (Village WWTP) shows a contiguous warm block: neighboring windows agree with each other, which is what a real — if shallow — signal looks like. Flow stays elevated for a week or more after a big storm, the slow build consistent with groundwater and inflow leaking into the collection system. The left grid (Red Hook Commons) is salt-and-pepper — isolated warm cells next to cool ones, the texture of noise. That’s an artifact of measurement resolution, not hydraulics: Commons flow is reported to the nearest 0.001 MGD on a base of about 0.007 MGD, too coarse for a correlation to resolve.

Red Hook Commons— peak window: lag 8d, r=0.10

start = oldest day in window (days ago)end = newest day in window (days ago)0246810121402468101214rain over the last 1 day Pearson r = -0.004 slope = -0.0001 MGD/in n = 697rain over the last 2 days Pearson r = 0.029 slope = 0.0005 MGD/in n = 696rain 1–1 days ago (1 day) Pearson r = 0.046 slope = 0.0010 MGD/in n = 697rain over the last 3 days Pearson r = 0.019 slope = 0.0002 MGD/in n = 695rain 1–2 days ago (2 days) Pearson r = 0.027 slope = 0.0004 MGD/in n = 696rain 2–2 days ago (1 day) Pearson r = -0.008 slope = -0.0002 MGD/in n = 697rain over the last 4 days Pearson r = 0.033 slope = 0.0004 MGD/in n = 694rain 1–3 days ago (3 days) Pearson r = 0.040 slope = 0.0005 MGD/in n = 695rain 2–3 days ago (2 days) Pearson r = 0.017 slope = 0.0003 MGD/in n = 696rain 3–3 days ago (1 day) Pearson r = 0.032 slope = 0.0007 MGD/in n = 697rain over the last 5 days Pearson r = 0.033 slope = 0.0003 MGD/in n = 693rain 1–4 days ago (4 days) Pearson r = 0.039 slope = 0.0004 MGD/in n = 694rain 2–4 days ago (3 days) Pearson r = 0.019 slope = 0.0002 MGD/in n = 695rain 3–4 days ago (2 days) Pearson r = 0.028 slope = 0.0004 MGD/in n = 696rain 4–4 days ago (1 day) Pearson r = 0.009 slope = 0.0002 MGD/in n = 697rain over the last 6 days Pearson r = 0.012 slope = 0.0001 MGD/in n = 692rain 1–5 days ago (5 days) Pearson r = 0.015 slope = 0.0002 MGD/in n = 693rain 2–5 days ago (4 days) Pearson r = -0.006 slope = -0.0001 MGD/in n = 694rain 3–5 days ago (3 days) Pearson r = -0.003 slope = -0.0000 MGD/in n = 695rain 4–5 days ago (2 days) Pearson r = -0.026 slope = -0.0004 MGD/in n = 696rain 5–5 days ago (1 day) Pearson r = -0.046 slope = -0.0010 MGD/in n = 697rain over the last 7 days Pearson r = 0.002 slope = 0.0000 MGD/in n = 691rain 1–6 days ago (6 days) Pearson r = 0.004 slope = 0.0000 MGD/in n = 692rain 2–6 days ago (5 days) Pearson r = -0.016 slope = -0.0002 MGD/in n = 693rain 3–6 days ago (4 days) Pearson r = -0.015 slope = -0.0002 MGD/in n = 694rain 4–6 days ago (3 days) Pearson r = -0.035 slope = -0.0004 MGD/in n = 695rain 5–6 days ago (2 days) Pearson r = -0.049 slope = -0.0007 MGD/in n = 696rain 6–6 days ago (1 day) Pearson r = -0.024 slope = -0.0005 MGD/in n = 697rain over the last 8 days Pearson r = -0.006 slope = -0.0000 MGD/in n = 690rain 1–7 days ago (7 days) Pearson r = -0.005 slope = -0.0000 MGD/in n = 691rain 2–7 days ago (6 days) Pearson r = -0.024 slope = -0.0002 MGD/in n = 692rain 3–7 days ago (5 days) Pearson r = -0.023 slope = -0.0002 MGD/in n = 693rain 4–7 days ago (4 days) Pearson r = -0.042 slope = -0.0005 MGD/in n = 694rain 5–7 days ago (3 days) Pearson r = -0.052 slope = -0.0007 MGD/in n = 695rain 6–7 days ago (2 days) Pearson r = -0.032 slope = -0.0005 MGD/in n = 696rain 7–7 days ago (1 day) Pearson r = -0.023 slope = -0.0005 MGD/in n = 697rain over the last 9 days Pearson r = 0.029 slope = 0.0002 MGD/in n = 689rain 1–8 days ago (8 days) Pearson r = 0.032 slope = 0.0003 MGD/in n = 690rain 2–8 days ago (7 days) Pearson r = 0.016 slope = 0.0001 MGD/in n = 691rain 3–8 days ago (6 days) Pearson r = 0.020 slope = 0.0002 MGD/in n = 692rain 4–8 days ago (5 days) Pearson r = 0.006 slope = 0.0001 MGD/in n = 693rain 5–8 days ago (4 days) Pearson r = 0.003 slope = 0.0000 MGD/in n = 694rain 6–8 days ago (3 days) Pearson r = 0.029 slope = 0.0004 MGD/in n = 695rain 7–8 days ago (2 days) Pearson r = 0.052 slope = 0.0008 MGD/in n = 696rain 8–8 days ago (1 day) Pearson r = 0.098 slope = 0.0022 MGD/in n = 6970.10rain over the last 10 days Pearson r = 0.027 slope = 0.0002 MGD/in n = 688rain 1–9 days ago (9 days) Pearson r = 0.030 slope = 0.0002 MGD/in n = 689rain 2–9 days ago (8 days) Pearson r = 0.014 slope = 0.0001 MGD/in n = 690rain 3–9 days ago (7 days) Pearson r = 0.017 slope = 0.0002 MGD/in n = 691rain 4–9 days ago (6 days) Pearson r = 0.005 slope = 0.0000 MGD/in n = 692rain 5–9 days ago (5 days) Pearson r = 0.001 slope = 0.0000 MGD/in n = 693rain 6–9 days ago (4 days) Pearson r = 0.024 slope = 0.0003 MGD/in n = 694rain 7–9 days ago (3 days) Pearson r = 0.041 slope = 0.0005 MGD/in n = 695rain 8–9 days ago (2 days) Pearson r = 0.066 slope = 0.0010 MGD/in n = 696rain 9–9 days ago (1 day) Pearson r = -0.003 slope = -0.0001 MGD/in n = 697rain over the last 11 days Pearson r = 0.023 slope = 0.0002 MGD/in n = 687rain 1–10 days ago (10 days) Pearson r = 0.025 slope = 0.0002 MGD/in n = 688rain 2–10 days ago (9 days) Pearson r = 0.010 slope = 0.0001 MGD/in n = 689rain 3–10 days ago (8 days) Pearson r = 0.013 slope = 0.0001 MGD/in n = 690rain 4–10 days ago (7 days) Pearson r = 0.001 slope = 0.0000 MGD/in n = 691rain 5–10 days ago (6 days) Pearson r = -0.003 slope = -0.0000 MGD/in n = 692rain 6–10 days ago (5 days) Pearson r = 0.017 slope = 0.0002 MGD/in n = 693rain 7–10 days ago (4 days) Pearson r = 0.031 slope = 0.0003 MGD/in n = 694rain 8–10 days ago (3 days) Pearson r = 0.048 slope = 0.0006 MGD/in n = 695rain 9–10 days ago (2 days) Pearson r = -0.009 slope = -0.0001 MGD/in n = 696rain 10–10 days ago (1 day) Pearson r = -0.010 slope = -0.0002 MGD/in n = 697rain over the last 12 days Pearson r = 0.012 slope = 0.0001 MGD/in n = 686rain 1–11 days ago (11 days) Pearson r = 0.014 slope = 0.0001 MGD/in n = 687rain 2–11 days ago (10 days) Pearson r = -0.002 slope = -0.0000 MGD/in n = 688rain 3–11 days ago (9 days) Pearson r = 0.001 slope = 0.0000 MGD/in n = 689rain 4–11 days ago (8 days) Pearson r = -0.011 slope = -0.0001 MGD/in n = 690rain 5–11 days ago (7 days) Pearson r = -0.016 slope = -0.0001 MGD/in n = 691rain 6–11 days ago (6 days) Pearson r = 0.002 slope = 0.0000 MGD/in n = 692rain 7–11 days ago (5 days) Pearson r = 0.013 slope = 0.0001 MGD/in n = 693rain 8–11 days ago (4 days) Pearson r = 0.026 slope = 0.0003 MGD/in n = 694rain 9–11 days ago (3 days) Pearson r = -0.026 slope = -0.0003 MGD/in n = 695rain 10–11 days ago (2 days) Pearson r = -0.029 slope = -0.0004 MGD/in n = 696rain 11–11 days ago (1 day) Pearson r = -0.032 slope = -0.0007 MGD/in n = 697rain over the last 13 days Pearson r = 0.012 slope = 0.0001 MGD/in n = 685rain 1–12 days ago (12 days) Pearson r = 0.014 slope = 0.0001 MGD/in n = 686rain 2–12 days ago (11 days) Pearson r = -0.001 slope = -0.0000 MGD/in n = 687rain 3–12 days ago (10 days) Pearson r = 0.002 slope = 0.0000 MGD/in n = 688rain 4–12 days ago (9 days) Pearson r = -0.009 slope = -0.0001 MGD/in n = 689rain 5–12 days ago (8 days) Pearson r = -0.013 slope = -0.0001 MGD/in n = 690rain 6–12 days ago (7 days) Pearson r = 0.004 slope = 0.0000 MGD/in n = 691rain 7–12 days ago (6 days) Pearson r = 0.014 slope = 0.0001 MGD/in n = 692rain 8–12 days ago (5 days) Pearson r = 0.025 slope = 0.0003 MGD/in n = 693rain 9–12 days ago (4 days) Pearson r = -0.021 slope = -0.0002 MGD/in n = 694rain 10–12 days ago (3 days) Pearson r = -0.022 slope = -0.0003 MGD/in n = 695rain 11–12 days ago (2 days) Pearson r = -0.020 slope = -0.0003 MGD/in n = 696rain 12–12 days ago (1 day) Pearson r = 0.003 slope = 0.0001 MGD/in n = 697rain over the last 14 days Pearson r = 0.010 slope = 0.0001 MGD/in n = 684rain 1–13 days ago (13 days) Pearson r = 0.011 slope = 0.0001 MGD/in n = 685rain 2–13 days ago (12 days) Pearson r = -0.004 slope = -0.0000 MGD/in n = 686rain 3–13 days ago (11 days) Pearson r = -0.001 slope = -0.0000 MGD/in n = 687rain 4–13 days ago (10 days) Pearson r = -0.012 slope = -0.0001 MGD/in n = 688rain 5–13 days ago (9 days) Pearson r = -0.016 slope = -0.0001 MGD/in n = 689rain 6–13 days ago (8 days) Pearson r = -0.000 slope = -0.0000 MGD/in n = 690rain 7–13 days ago (7 days) Pearson r = 0.009 slope = 0.0001 MGD/in n = 691rain 8–13 days ago (6 days) Pearson r = 0.019 slope = 0.0002 MGD/in n = 692rain 9–13 days ago (5 days) Pearson r = -0.024 slope = -0.0002 MGD/in n = 693rain 10–13 days ago (4 days) Pearson r = -0.024 slope = -0.0003 MGD/in n = 694rain 11–13 days ago (3 days) Pearson r = -0.022 slope = -0.0003 MGD/in n = 695rain 12–13 days ago (2 days) Pearson r = -0.004 slope = -0.0001 MGD/in n = 696rain 13–13 days ago (1 day) Pearson r = -0.008 slope = -0.0002 MGD/in n = 697rain over the last 15 days Pearson r = 0.016 slope = 0.0001 MGD/in n = 683rain 1–14 days ago (14 days) Pearson r = 0.018 slope = 0.0001 MGD/in n = 684rain 2–14 days ago (13 days) Pearson r = 0.003 slope = 0.0000 MGD/in n = 685rain 3–14 days ago (12 days) Pearson r = 0.007 slope = 0.0000 MGD/in n = 686rain 4–14 days ago (11 days) Pearson r = -0.004 slope = -0.0000 MGD/in n = 687rain 5–14 days ago (10 days) Pearson r = -0.008 slope = -0.0001 MGD/in n = 688rain 6–14 days ago (9 days) Pearson r = 0.007 slope = 0.0001 MGD/in n = 689rain 7–14 days ago (8 days) Pearson r = 0.016 slope = 0.0001 MGD/in n = 690rain 8–14 days ago (7 days) Pearson r = 0.026 slope = 0.0002 MGD/in n = 691rain 9–14 days ago (6 days) Pearson r = -0.013 slope = -0.0001 MGD/in n = 692rain 10–14 days ago (5 days) Pearson r = -0.012 slope = -0.0001 MGD/in n = 693rain 11–14 days ago (4 days) Pearson r = -0.008 slope = -0.0001 MGD/in n = 694rain 12–14 days ago (3 days) Pearson r = 0.009 slope = 0.0001 MGD/in n = 695rain 13–14 days ago (2 days) Pearson r = 0.009 slope = 0.0001 MGD/in n = 696rain 14–14 days ago (1 day) Pearson r = 0.022 slope = 0.0005 MGD/in n = 697

Hover any cell for details. Cells below n=30 are omitted. The bottom row (end = 0) is "cumulative rain ending today"; the diagonal (start = end) is "single-day rain at lag k".

Village WWTP— peak window: last 15d, r=0.16

start = oldest day in window (days ago)end = newest day in window (days ago)0246810121402468101214rain over the last 1 day Pearson r = 0.032 slope = 0.0010 MGD/in n = 990rain over the last 2 days Pearson r = 0.031 slope = 0.0007 MGD/in n = 987rain 1–1 days ago (1 day) Pearson r = 0.012 slope = 0.0004 MGD/in n = 988rain over the last 3 days Pearson r = 0.058 slope = 0.0010 MGD/in n = 984rain 1–2 days ago (2 days) Pearson r = 0.048 slope = 0.0010 MGD/in n = 985rain 2–2 days ago (1 day) Pearson r = 0.058 slope = 0.0018 MGD/in n = 986rain over the last 4 days Pearson r = 0.081 slope = 0.0013 MGD/in n = 981rain 1–3 days ago (3 days) Pearson r = 0.074 slope = 0.0013 MGD/in n = 982rain 2–3 days ago (2 days) Pearson r = 0.082 slope = 0.0018 MGD/in n = 983rain 3–3 days ago (1 day) Pearson r = 0.061 slope = 0.0019 MGD/in n = 984rain over the last 5 days Pearson r = 0.108 slope = 0.0015 MGD/in n = 978rain 1–4 days ago (4 days) Pearson r = 0.103 slope = 0.0016 MGD/in n = 979rain 2–4 days ago (3 days) Pearson r = 0.110 slope = 0.0019 MGD/in n = 980rain 3–4 days ago (2 days) Pearson r = 0.095 slope = 0.0021 MGD/in n = 981rain 4–4 days ago (1 day) Pearson r = 0.077 slope = 0.0024 MGD/in n = 982rain over the last 6 days Pearson r = 0.116 slope = 0.0015 MGD/in n = 975rain 1–5 days ago (5 days) Pearson r = 0.112 slope = 0.0016 MGD/in n = 976rain 2–5 days ago (4 days) Pearson r = 0.116 slope = 0.0018 MGD/in n = 977rain 3–5 days ago (3 days) Pearson r = 0.101 slope = 0.0018 MGD/in n = 978rain 4–5 days ago (2 days) Pearson r = 0.082 slope = 0.0018 MGD/in n = 979rain 5–5 days ago (1 day) Pearson r = 0.042 slope = 0.0013 MGD/in n = 980rain over the last 7 days Pearson r = 0.114 slope = 0.0013 MGD/in n = 972rain 1–6 days ago (6 days) Pearson r = 0.111 slope = 0.0014 MGD/in n = 973rain 2–6 days ago (5 days) Pearson r = 0.114 slope = 0.0016 MGD/in n = 974rain 3–6 days ago (4 days) Pearson r = 0.098 slope = 0.0015 MGD/in n = 975rain 4–6 days ago (3 days) Pearson r = 0.078 slope = 0.0014 MGD/in n = 976rain 5–6 days ago (2 days) Pearson r = 0.042 slope = 0.0009 MGD/in n = 977rain 6–6 days ago (1 day) Pearson r = 0.020 slope = 0.0006 MGD/in n = 978rain over the last 8 days Pearson r = 0.106 slope = 0.0012 MGD/in n = 969rain 1–7 days ago (7 days) Pearson r = 0.103 slope = 0.0012 MGD/in n = 970rain 2–7 days ago (6 days) Pearson r = 0.106 slope = 0.0014 MGD/in n = 971rain 3–7 days ago (5 days) Pearson r = 0.090 slope = 0.0013 MGD/in n = 972rain 4–7 days ago (4 days) Pearson r = 0.071 slope = 0.0011 MGD/in n = 973rain 5–7 days ago (3 days) Pearson r = 0.039 slope = 0.0007 MGD/in n = 974rain 6–7 days ago (2 days) Pearson r = 0.020 slope = 0.0004 MGD/in n = 975rain 7–7 days ago (1 day) Pearson r = 0.009 slope = 0.0003 MGD/in n = 976rain over the last 9 days Pearson r = 0.102 slope = 0.0011 MGD/in n = 966rain 1–8 days ago (8 days) Pearson r = 0.098 slope = 0.0011 MGD/in n = 967rain 2–8 days ago (7 days) Pearson r = 0.101 slope = 0.0012 MGD/in n = 968rain 3–8 days ago (6 days) Pearson r = 0.087 slope = 0.0011 MGD/in n = 969rain 4–8 days ago (5 days) Pearson r = 0.069 slope = 0.0010 MGD/in n = 970rain 5–8 days ago (4 days) Pearson r = 0.039 slope = 0.0006 MGD/in n = 971rain 6–8 days ago (3 days) Pearson r = 0.023 slope = 0.0004 MGD/in n = 972rain 7–8 days ago (2 days) Pearson r = 0.014 slope = 0.0003 MGD/in n = 973rain 8–8 days ago (1 day) Pearson r = 0.012 slope = 0.0004 MGD/in n = 974rain over the last 10 days Pearson r = 0.108 slope = 0.0011 MGD/in n = 963rain 1–9 days ago (9 days) Pearson r = 0.104 slope = 0.0011 MGD/in n = 964rain 2–9 days ago (8 days) Pearson r = 0.106 slope = 0.0012 MGD/in n = 965rain 3–9 days ago (7 days) Pearson r = 0.094 slope = 0.0011 MGD/in n = 966rain 4–9 days ago (6 days) Pearson r = 0.079 slope = 0.0010 MGD/in n = 967rain 5–9 days ago (5 days) Pearson r = 0.053 slope = 0.0007 MGD/in n = 968rain 6–9 days ago (4 days) Pearson r = 0.038 slope = 0.0006 MGD/in n = 969rain 7–9 days ago (3 days) Pearson r = 0.033 slope = 0.0006 MGD/in n = 970rain 8–9 days ago (2 days) Pearson r = 0.033 slope = 0.0007 MGD/in n = 971rain 9–9 days ago (1 day) Pearson r = 0.037 slope = 0.0012 MGD/in n = 972rain over the last 11 days Pearson r = 0.128 slope = 0.0012 MGD/in n = 960rain 1–10 days ago (10 days) Pearson r = 0.123 slope = 0.0012 MGD/in n = 961rain 2–10 days ago (9 days) Pearson r = 0.125 slope = 0.0013 MGD/in n = 962rain 3–10 days ago (8 days) Pearson r = 0.114 slope = 0.0012 MGD/in n = 963rain 4–10 days ago (7 days) Pearson r = 0.101 slope = 0.0012 MGD/in n = 964rain 5–10 days ago (6 days) Pearson r = 0.080 slope = 0.0010 MGD/in n = 965rain 6–10 days ago (5 days) Pearson r = 0.069 slope = 0.0010 MGD/in n = 966rain 7–10 days ago (4 days) Pearson r = 0.067 slope = 0.0010 MGD/in n = 967rain 8–10 days ago (3 days) Pearson r = 0.071 slope = 0.0012 MGD/in n = 968rain 9–10 days ago (2 days) Pearson r = 0.080 slope = 0.0017 MGD/in n = 969rain 10–10 days ago (1 day) Pearson r = 0.078 slope = 0.0024 MGD/in n = 970rain over the last 12 days Pearson r = 0.136 slope = 0.0012 MGD/in n = 957rain 1–11 days ago (11 days) Pearson r = 0.131 slope = 0.0012 MGD/in n = 958rain 2–11 days ago (10 days) Pearson r = 0.131 slope = 0.0013 MGD/in n = 959rain 3–11 days ago (9 days) Pearson r = 0.120 slope = 0.0012 MGD/in n = 960rain 4–11 days ago (8 days) Pearson r = 0.108 slope = 0.0012 MGD/in n = 961rain 5–11 days ago (7 days) Pearson r = 0.089 slope = 0.0011 MGD/in n = 962rain 6–11 days ago (6 days) Pearson r = 0.080 slope = 0.0010 MGD/in n = 963rain 7–11 days ago (5 days) Pearson r = 0.080 slope = 0.0011 MGD/in n = 964rain 8–11 days ago (4 days) Pearson r = 0.083 slope = 0.0013 MGD/in n = 965rain 9–11 days ago (3 days) Pearson r = 0.089 slope = 0.0016 MGD/in n = 966rain 10–11 days ago (2 days) Pearson r = 0.083 slope = 0.0018 MGD/in n = 967rain 11–11 days ago (1 day) Pearson r = 0.043 slope = 0.0014 MGD/in n = 968rain over the last 13 days Pearson r = 0.157 slope = 0.0014 MGD/in n = 954rain 1–12 days ago (12 days) Pearson r = 0.154 slope = 0.0014 MGD/in n = 955rain 2–12 days ago (11 days) Pearson r = 0.154 slope = 0.0014 MGD/in n = 956rain 3–12 days ago (10 days) Pearson r = 0.144 slope = 0.0014 MGD/in n = 957rain 4–12 days ago (9 days) Pearson r = 0.134 slope = 0.0014 MGD/in n = 958rain 5–12 days ago (8 days) Pearson r = 0.117 slope = 0.0013 MGD/in n = 959rain 6–12 days ago (7 days) Pearson r = 0.111 slope = 0.0013 MGD/in n = 960rain 7–12 days ago (6 days) Pearson r = 0.114 slope = 0.0015 MGD/in n = 961rain 8–12 days ago (5 days) Pearson r = 0.120 slope = 0.0017 MGD/in n = 962rain 9–12 days ago (4 days) Pearson r = 0.127 slope = 0.0020 MGD/in n = 963rain 10–12 days ago (3 days) Pearson r = 0.124 slope = 0.0022 MGD/in n = 964rain 11–12 days ago (2 days) Pearson r = 0.098 slope = 0.0021 MGD/in n = 965rain 12–12 days ago (1 day) Pearson r = 0.099 slope = 0.0031 MGD/in n = 966rain over the last 14 days Pearson r = 0.155 slope = 0.0013 MGD/in n = 951rain 1–13 days ago (13 days) Pearson r = 0.151 slope = 0.0013 MGD/in n = 952rain 2–13 days ago (12 days) Pearson r = 0.151 slope = 0.0014 MGD/in n = 953rain 3–13 days ago (11 days) Pearson r = 0.142 slope = 0.0013 MGD/in n = 954rain 4–13 days ago (10 days) Pearson r = 0.133 slope = 0.0013 MGD/in n = 955rain 5–13 days ago (9 days) Pearson r = 0.116 slope = 0.0012 MGD/in n = 956rain 6–13 days ago (8 days) Pearson r = 0.110 slope = 0.0012 MGD/in n = 957rain 7–13 days ago (7 days) Pearson r = 0.112 slope = 0.0013 MGD/in n = 958rain 8–13 days ago (6 days) Pearson r = 0.119 slope = 0.0015 MGD/in n = 959rain 9–13 days ago (5 days) Pearson r = 0.124 slope = 0.0017 MGD/in n = 960rain 10–13 days ago (4 days) Pearson r = 0.120 slope = 0.0019 MGD/in n = 961rain 11–13 days ago (3 days) Pearson r = 0.093 slope = 0.0017 MGD/in n = 962rain 12–13 days ago (2 days) Pearson r = 0.086 slope = 0.0019 MGD/in n = 963rain 13–13 days ago (1 day) Pearson r = 0.025 slope = 0.0008 MGD/in n = 964rain over the last 15 days Pearson r = 0.162 slope = 0.0013 MGD/in n = 9480.16rain 1–14 days ago (14 days) Pearson r = 0.159 slope = 0.0013 MGD/in n = 949rain 2–14 days ago (13 days) Pearson r = 0.159 slope = 0.0014 MGD/in n = 950rain 3–14 days ago (12 days) Pearson r = 0.150 slope = 0.0014 MGD/in n = 951rain 4–14 days ago (11 days) Pearson r = 0.142 slope = 0.0013 MGD/in n = 952rain 5–14 days ago (10 days) Pearson r = 0.132 slope = 0.0013 MGD/in n = 953rain 6–14 days ago (9 days) Pearson r = 0.126 slope = 0.0013 MGD/in n = 954rain 7–14 days ago (8 days) Pearson r = 0.128 slope = 0.0014 MGD/in n = 955rain 8–14 days ago (7 days) Pearson r = 0.136 slope = 0.0016 MGD/in n = 956rain 9–14 days ago (6 days) Pearson r = 0.143 slope = 0.0019 MGD/in n = 957rain 10–14 days ago (5 days) Pearson r = 0.139 slope = 0.0020 MGD/in n = 958rain 11–14 days ago (4 days) Pearson r = 0.117 slope = 0.0018 MGD/in n = 959rain 12–14 days ago (3 days) Pearson r = 0.111 slope = 0.0020 MGD/in n = 960rain 13–14 days ago (2 days) Pearson r = 0.069 slope = 0.0015 MGD/in n = 961rain 14–14 days ago (1 day) Pearson r = 0.075 slope = 0.0023 MGD/in n = 962

Hover any cell for details. Cells below n=30 are omitted. The bottom row (end = 0) is "cumulative rain ending today"; the diagonal (start = end) is "single-day rain at lag k".

So there isa rainfall signal at the Village plant. The question that matters for the pump-outs isn’t whether it’s strong — it’s what happens to that signal at the top of the range.

Q: Is the plant running out of capacity when it rains?

This is the key chart. We sort every day by how much rain fell over the Village plant’s best rainfall window, split the days into five equal-count buckets from driest to wettest, and plot the distribution of daily flow in each bucket — the median, the 75th percentile, and the 90th percentile.

If the plant had spare capacity, all three lines would rise together as it gets wetter. Instead, the median rises (the plant takes on more load with rain) while the upper percentiles flatten onto a ceiling right at the 0.050 MGD SPDES design line. More rain stops producing more flow — because the plant can’t pass more. The excess goes to the equalization tank, and the EQ tank is what gets pumped out. This is the statistical fingerprint of a censoredmeasurement: you aren’t seeing the plant’s true wet-weather load, you’re seeing it clipped at the plant’s real throughput.

The ceiling is robust: it sits at the same ~0.055 MGD whether we measure rain over 3 days or 15, and it appears in all four seasons (most sharply in winter, when frozen ground and snowmelt push the most groundwater into the system) — so it isn’t a wet-season coincidence. It is the behavior of a plant that is hydraulically undersized for its collection system’s wet-weather inflow.

For context, the histogram below shows every day of measured flow against each plant’s SPDES design capacity (0.050 MGD at the Village WWTP via sub-outfall 01A; 0.025 MGD at Red Hook Commons via sub-outfall 01B). Note the caveat the censoring analysis adds: because wet-weather flow is clipped at the design line, the count of days at or beyond capacity understates how often the plant would have exceeded it without the pump-outs holding it back.

Put together: rainfall raises load at the Village plant, the plant hits a hard ceiling at its design flow on wet days, and the EQ-tank pump-outs are the most natural explanation for what keeps it there. The 10× pump-out overrun reads less like discretionary spending and more like the recurring cost of moving wet-weather inflow the plant can’t process — an inflow & infiltration problem.

A note on the rainfall data

The DEC monthly DMR forms include a column for the operator’s gauge readings of daily rainfall, and it would be natural to use that column for any rainfall analysis. We don’t — and the reason is worth flagging on its own. Cross-checked against NOAA observations from a CoCoRaHS station 1.4 miles from the village, the operator-reported series is unreliable: 11% lower in total rainfall, ~5% of days disagree by more than half an inch, and many days have a major storm recorded by NOAA that the operator’s column shows as 0.00″.

Paired days: 500 · Within 0.10″: 408 (82%) · Disagree by > 0.5″: 32
Pearson r = 0.581 · Operator total: 51.9 · NOAA total: 58.7 (operator 12% lower over the matched window)
Days where only one source reported: 4 operator-only, 125 NOAA-only.
125 dates have NOAA data but no operator reading — show first 5
  • 2024-09-01: NOAA recorded 0.00
  • 2024-09-02: NOAA recorded 0.00
  • 2024-09-03: NOAA recorded 0.00
  • 2024-09-04: NOAA recorded 0.00
  • 2024-09-05: NOAA recorded 0.00

Every rainfall chart on this page therefore uses NOAA as the source of truth, falling back to the operator’s column only where NOAA didn’t observe. A side effect of this check: the operator’s rainfall column on the DMR is itself unreliable enough to be of concern to NYSDEC, independent of the pump-out cost question.

Q: So what is driving the pump-outs?

The flow data points to wet-weather hydraulic load as the leading explanation: the Village plant runs into its design ceiling when it rains, and the EQ-tank pump-outs are the relief mechanism. The published records can’t prove that for any individualhaul — the QuickBooks memos describe pumps but not causes, the dates are billing dates, and we can’t reliably split events between the Village WWTP and Red Hook Commons. So these other contributors can’t be ruled in or out, and may stack on top of the capacity problem:

  • Inflow & infiltration (leading) — the censored flow ceiling is the direct evidence: stormwater and groundwater entering the collection system faster than the plant can process, forcing diversion to the EQ tank. This is a collection-system/capital issue, not an operating choice.
  • Equipment failures or maintenance backlog — pump-outs cluster in time (4 events in August, 4 in December, 4 in January), which could also fit an equipment-issue pattern layered on the baseline load.
  • Biological process upsets — sudden MLSS drops or WAS-rate changes around event clusters would point to the activated-sludge tank failing, with the EQ tank used as a hydraulic buffer to keep influent off the bug population.
  • Base-load drift — village sewer base flow may be growing fast enough to fill the EQ tank more often, compounding the wet-weather load.
What the village would need to publish

To answer “what is driving the pump-outs” with the rigor the budget overrun warrants, the village would need to publish, per pump-out event:

  • The plant pumped (Village WWTP / Commons / both).
  • The operator’s stated cause (process upset, equipment failure, scheduled maintenance, hydraulic load).
  • The EQ tank level at the time of the call and after the pump.
  • The volume actually hauled (vs the volume billed, since three of the larger emergency invoices use rate-divided volume rather than measured volume).

None of this requires special equipment. It does require the operator to keep a log and the village to publish it.

Sources