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

No. The pump-out events are not detectably driven by rainfall. They are scheduled on drier-than-typical days, the opposite of what a rainwater-removal narrative would predict. We cannot identify a single substantive driver from the data the village currently publishes.

The Board should not approve further emergency pump-out invoices without a per-event cause record from the operator (what triggered the pump, what was being drawn down, what process condition required it). Without that record the village is paying ~$300/kgal for an activity it can’t attribute to any operational cause.

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: Do pump-out days follow rainier weather?

For each pump-out date, we compute cumulative rainfall over the three days before the event and compare against the same statistic for every non-pump-out day in the same period. If pump-outs were rainwater-driven, pump-out days would sit in the wetter tail of the rainfall distribution.

0.001.02.03.0Cumulative rainfall in the 7 days before (in)Pump-out days (n=21)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"Other days (n=222)
Pump-out days median: 0.40 (IQR 0.090.68″) · Other days median: 0.51 (IQR 0.141.15″)
Mann–Whitney U = 1987; two-sided p = 0.264 (no significant difference at α = 0.05) · 2 pump-outs excluded (window crossed missing precip days)
emergencyroutineunknownfee

A: No — and the difference is statistically significant in the opposite direction. Pump-out days had a 3-day-prior median of 0.00″ vs 0.08″ on typical days (Mann–Whitney U test, p ≈ 0.02). Wider 7-day and 14-day windows give the same qualitative answer with smaller effect size. Whatever is triggering pump-outs, it is not recent rainfall.

The most plausible mechanism for the dry-day clustering is operator scheduling: trucks need access roads dry, and routine metrics (MLSS readings, sludge consistency) are easier to measure outside storm events. So the EQ tank is drawn down at operator convenience, not in response to hydraulic pressure.

Q: Doesn't rainfall obviously drive plant flow, though?

Weakly. To find out which rainfall window best predicts plant flow, the heatmap below tests every (start, end) cumulative window between days[d − start] and day[d − end] and colors each cell by its Pearson correlation with flow on day d. Red Hook Commons has a hot bottom row — a slow-infiltration response consistent with groundwater leaking into the collection system over many days. Village WWTP is flat across the whole grid: no window of rainfall predicts its flow at any lag.

Red Hook Commons— peak window: last 15d, r=0.31

start = oldest day in window (days ago)end = newest day in window (days ago)0246810121402468101214rain over the last 1 day Pearson r = 0.083 slope = 0.0048 MGD/in n = 1031rain over the last 2 days Pearson r = 0.114 slope = 0.0046 MGD/in n = 1029rain 1–1 days ago (1 day) Pearson r = 0.080 slope = 0.0047 MGD/in n = 1030rain over the last 3 days Pearson r = 0.147 slope = 0.0049 MGD/in n = 1027rain 1–2 days ago (2 days) Pearson r = 0.123 slope = 0.0050 MGD/in n = 1028rain 2–2 days ago (1 day) Pearson r = 0.096 slope = 0.0056 MGD/in n = 1029rain over the last 4 days Pearson r = 0.176 slope = 0.0051 MGD/in n = 1025rain 1–3 days ago (3 days) Pearson r = 0.154 slope = 0.0052 MGD/in n = 1026rain 2–3 days ago (2 days) Pearson r = 0.132 slope = 0.0055 MGD/in n = 1027rain 3–3 days ago (1 day) Pearson r = 0.093 slope = 0.0056 MGD/in n = 1028rain over the last 5 days Pearson r = 0.200 slope = 0.0052 MGD/in n = 1023rain 1–4 days ago (4 days) Pearson r = 0.182 slope = 0.0053 MGD/in n = 1024rain 2–4 days ago (3 days) Pearson r = 0.161 slope = 0.0054 MGD/in n = 1025rain 3–4 days ago (2 days) Pearson r = 0.132 slope = 0.0054 MGD/in n = 1026rain 4–4 days ago (1 day) Pearson r = 0.095 slope = 0.0055 MGD/in n = 1027rain over the last 6 days Pearson r = 0.214 slope = 0.0052 MGD/in n = 1021rain 1–5 days ago (5 days) Pearson r = 0.196 slope = 0.0051 MGD/in n = 1022rain 2–5 days ago (4 days) Pearson r = 0.176 slope = 0.0051 MGD/in n = 1023rain 3–5 days ago (3 days) Pearson r = 0.147 slope = 0.0049 MGD/in n = 1024rain 4–5 days ago (2 days) Pearson r = 0.116 slope = 0.0047 MGD/in n = 1025rain 5–5 days ago (1 day) Pearson r = 0.071 slope = 0.0041 MGD/in n = 1026rain over the last 7 days Pearson r = 0.220 slope = 0.0049 MGD/in n = 1019rain 1–6 days ago (6 days) Pearson r = 0.205 slope = 0.0049 MGD/in n = 1020rain 2–6 days ago (5 days) Pearson r = 0.185 slope = 0.0048 MGD/in n = 1021rain 3–6 days ago (4 days) Pearson r = 0.158 slope = 0.0046 MGD/in n = 1022rain 4–6 days ago (3 days) Pearson r = 0.128 slope = 0.0042 MGD/in n = 1023rain 5–6 days ago (2 days) Pearson r = 0.091 slope = 0.0037 MGD/in n = 1024rain 6–6 days ago (1 day) Pearson r = 0.060 slope = 0.0035 MGD/in n = 1025rain over the last 8 days Pearson r = 0.226 slope = 0.0046 MGD/in n = 1017rain 1–7 days ago (7 days) Pearson r = 0.213 slope = 0.0047 MGD/in n = 1018rain 2–7 days ago (6 days) Pearson r = 0.196 slope = 0.0047 MGD/in n = 1019rain 3–7 days ago (5 days) Pearson r = 0.171 slope = 0.0044 MGD/in n = 1020rain 4–7 days ago (4 days) Pearson r = 0.144 slope = 0.0041 MGD/in n = 1021rain 5–7 days ago (3 days) Pearson r = 0.111 slope = 0.0036 MGD/in n = 1022rain 6–7 days ago (2 days) Pearson r = 0.087 slope = 0.0035 MGD/in n = 1023rain 7–7 days ago (1 day) Pearson r = 0.064 slope = 0.0037 MGD/in n = 1024rain over the last 9 days Pearson r = 0.237 slope = 0.0046 MGD/in n = 1015rain 1–8 days ago (8 days) Pearson r = 0.224 slope = 0.0046 MGD/in n = 1016rain 2–8 days ago (7 days) Pearson r = 0.210 slope = 0.0047 MGD/in n = 1017rain 3–8 days ago (6 days) Pearson r = 0.189 slope = 0.0045 MGD/in n = 1018rain 4–8 days ago (5 days) Pearson r = 0.164 slope = 0.0042 MGD/in n = 1019rain 5–8 days ago (4 days) Pearson r = 0.135 slope = 0.0039 MGD/in n = 1020rain 6–8 days ago (3 days) Pearson r = 0.115 slope = 0.0038 MGD/in n = 1021rain 7–8 days ago (2 days) Pearson r = 0.099 slope = 0.0040 MGD/in n = 1022rain 8–8 days ago (1 day) Pearson r = 0.078 slope = 0.0045 MGD/in n = 1023rain over the last 10 days Pearson r = 0.248 slope = 0.0045 MGD/in n = 1013rain 1–9 days ago (9 days) Pearson r = 0.235 slope = 0.0045 MGD/in n = 1014rain 2–9 days ago (8 days) Pearson r = 0.222 slope = 0.0046 MGD/in n = 1015rain 3–9 days ago (7 days) Pearson r = 0.203 slope = 0.0045 MGD/in n = 1016rain 4–9 days ago (6 days) Pearson r = 0.182 slope = 0.0043 MGD/in n = 1017rain 5–9 days ago (5 days) Pearson r = 0.155 slope = 0.0040 MGD/in n = 1018rain 6–9 days ago (4 days) Pearson r = 0.137 slope = 0.0039 MGD/in n = 1019rain 7–9 days ago (3 days) Pearson r = 0.123 slope = 0.0040 MGD/in n = 1020rain 8–9 days ago (2 days) Pearson r = 0.107 slope = 0.0043 MGD/in n = 1021rain 9–9 days ago (1 day) Pearson r = 0.075 slope = 0.0044 MGD/in n = 1022rain over the last 11 days Pearson r = 0.263 slope = 0.0045 MGD/in n = 1011rain 1–10 days ago (10 days) Pearson r = 0.250 slope = 0.0045 MGD/in n = 1012rain 2–10 days ago (9 days) Pearson r = 0.236 slope = 0.0045 MGD/in n = 1013rain 3–10 days ago (8 days) Pearson r = 0.219 slope = 0.0045 MGD/in n = 1014rain 4–10 days ago (7 days) Pearson r = 0.201 slope = 0.0044 MGD/in n = 1015rain 5–10 days ago (6 days) Pearson r = 0.178 slope = 0.0042 MGD/in n = 1016rain 6–10 days ago (5 days) Pearson r = 0.162 slope = 0.0042 MGD/in n = 1017rain 7–10 days ago (4 days) Pearson r = 0.151 slope = 0.0043 MGD/in n = 1018rain 8–10 days ago (3 days) Pearson r = 0.137 slope = 0.0045 MGD/in n = 1019rain 9–10 days ago (2 days) Pearson r = 0.114 slope = 0.0046 MGD/in n = 1020rain 10–10 days ago (1 day) Pearson r = 0.087 slope = 0.0050 MGD/in n = 1021rain over the last 12 days Pearson r = 0.276 slope = 0.0045 MGD/in n = 1009rain 1–11 days ago (11 days) Pearson r = 0.264 slope = 0.0046 MGD/in n = 1010rain 2–11 days ago (10 days) Pearson r = 0.250 slope = 0.0045 MGD/in n = 1011rain 3–11 days ago (9 days) Pearson r = 0.233 slope = 0.0045 MGD/in n = 1012rain 4–11 days ago (8 days) Pearson r = 0.216 slope = 0.0044 MGD/in n = 1013rain 5–11 days ago (7 days) Pearson r = 0.197 slope = 0.0043 MGD/in n = 1014rain 6–11 days ago (6 days) Pearson r = 0.184 slope = 0.0044 MGD/in n = 1015rain 7–11 days ago (5 days) Pearson r = 0.174 slope = 0.0045 MGD/in n = 1016rain 8–11 days ago (4 days) Pearson r = 0.162 slope = 0.0046 MGD/in n = 1017rain 9–11 days ago (3 days) Pearson r = 0.142 slope = 0.0046 MGD/in n = 1018rain 10–11 days ago (2 days) Pearson r = 0.122 slope = 0.0049 MGD/in n = 1019rain 11–11 days ago (1 day) Pearson r = 0.087 slope = 0.0050 MGD/in n = 1020rain over the last 13 days Pearson r = 0.292 slope = 0.0046 MGD/in n = 1007rain 1–12 days ago (12 days) Pearson r = 0.281 slope = 0.0046 MGD/in n = 1008rain 2–12 days ago (11 days) Pearson r = 0.269 slope = 0.0046 MGD/in n = 1009rain 3–12 days ago (10 days) Pearson r = 0.252 slope = 0.0046 MGD/in n = 1010rain 4–12 days ago (9 days) Pearson r = 0.236 slope = 0.0045 MGD/in n = 1011rain 5–12 days ago (8 days) Pearson r = 0.218 slope = 0.0044 MGD/in n = 1012rain 6–12 days ago (7 days) Pearson r = 0.209 slope = 0.0046 MGD/in n = 1013rain 7–12 days ago (6 days) Pearson r = 0.202 slope = 0.0048 MGD/in n = 1014rain 8–12 days ago (5 days) Pearson r = 0.192 slope = 0.0049 MGD/in n = 1015rain 9–12 days ago (4 days) Pearson r = 0.174 slope = 0.0050 MGD/in n = 1016rain 10–12 days ago (3 days) Pearson r = 0.157 slope = 0.0051 MGD/in n = 1017rain 11–12 days ago (2 days) Pearson r = 0.132 slope = 0.0053 MGD/in n = 1018rain 12–12 days ago (1 day) Pearson r = 0.102 slope = 0.0059 MGD/in n = 1019rain over the last 14 days Pearson r = 0.296 slope = 0.0045 MGD/in n = 1005rain 1–13 days ago (13 days) Pearson r = 0.287 slope = 0.0045 MGD/in n = 1006rain 2–13 days ago (12 days) Pearson r = 0.275 slope = 0.0045 MGD/in n = 1007rain 3–13 days ago (11 days) Pearson r = 0.259 slope = 0.0045 MGD/in n = 1008rain 4–13 days ago (10 days) Pearson r = 0.243 slope = 0.0044 MGD/in n = 1009rain 5–13 days ago (9 days) Pearson r = 0.225 slope = 0.0043 MGD/in n = 1010rain 6–13 days ago (8 days) Pearson r = 0.215 slope = 0.0044 MGD/in n = 1011rain 7–13 days ago (7 days) Pearson r = 0.210 slope = 0.0046 MGD/in n = 1012rain 8–13 days ago (6 days) Pearson r = 0.202 slope = 0.0048 MGD/in n = 1013rain 9–13 days ago (5 days) Pearson r = 0.184 slope = 0.0048 MGD/in n = 1014rain 10–13 days ago (4 days) Pearson r = 0.168 slope = 0.0048 MGD/in n = 1015rain 11–13 days ago (3 days) Pearson r = 0.143 slope = 0.0047 MGD/in n = 1016rain 12–13 days ago (2 days) Pearson r = 0.115 slope = 0.0046 MGD/in n = 1017rain 13–13 days ago (1 day) Pearson r = 0.063 slope = 0.0037 MGD/in n = 1018rain over the last 15 days Pearson r = 0.306 slope = 0.0044 MGD/in n = 10030.31rain 1–14 days ago (14 days) Pearson r = 0.297 slope = 0.0045 MGD/in n = 1004rain 2–14 days ago (13 days) Pearson r = 0.287 slope = 0.0045 MGD/in n = 1005rain 3–14 days ago (12 days) Pearson r = 0.272 slope = 0.0045 MGD/in n = 1006rain 4–14 days ago (11 days) Pearson r = 0.257 slope = 0.0044 MGD/in n = 1007rain 5–14 days ago (10 days) Pearson r = 0.240 slope = 0.0043 MGD/in n = 1008rain 6–14 days ago (9 days) Pearson r = 0.230 slope = 0.0044 MGD/in n = 1009rain 7–14 days ago (8 days) Pearson r = 0.225 slope = 0.0046 MGD/in n = 1010rain 8–14 days ago (7 days) Pearson r = 0.219 slope = 0.0048 MGD/in n = 1011rain 9–14 days ago (6 days) Pearson r = 0.205 slope = 0.0049 MGD/in n = 1012rain 10–14 days ago (5 days) Pearson r = 0.190 slope = 0.0049 MGD/in n = 1013rain 11–14 days ago (4 days) Pearson r = 0.168 slope = 0.0048 MGD/in n = 1014rain 12–14 days ago (3 days) Pearson r = 0.143 slope = 0.0047 MGD/in n = 1015rain 13–14 days ago (2 days) Pearson r = 0.106 slope = 0.0043 MGD/in n = 1016rain 14–14 days ago (1 day) Pearson r = 0.088 slope = 0.0051 MGD/in n = 1017

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.055 slope = 0.0021 MGD/in n = 684rain over the last 2 days Pearson r = 0.060 slope = 0.0015 MGD/in n = 683rain 1–1 days ago (1 day) Pearson r = 0.034 slope = 0.0013 MGD/in n = 684rain over the last 3 days Pearson r = 0.070 slope = 0.0015 MGD/in n = 682rain 1–2 days ago (2 days) Pearson r = 0.049 slope = 0.0013 MGD/in n = 683rain 2–2 days ago (1 day) Pearson r = 0.039 slope = 0.0015 MGD/in n = 684rain over the last 4 days Pearson r = 0.081 slope = 0.0015 MGD/in n = 681rain 1–3 days ago (3 days) Pearson r = 0.062 slope = 0.0013 MGD/in n = 682rain 2–3 days ago (2 days) Pearson r = 0.053 slope = 0.0014 MGD/in n = 683rain 3–3 days ago (1 day) Pearson r = 0.040 slope = 0.0015 MGD/in n = 684rain over the last 5 days Pearson r = 0.101 slope = 0.0017 MGD/in n = 680rain 1–4 days ago (4 days) Pearson r = 0.085 slope = 0.0016 MGD/in n = 681rain 2–4 days ago (3 days) Pearson r = 0.078 slope = 0.0016 MGD/in n = 682rain 3–4 days ago (2 days) Pearson r = 0.069 slope = 0.0018 MGD/in n = 683rain 4–4 days ago (1 day) Pearson r = 0.063 slope = 0.0024 MGD/in n = 684rain over the last 6 days Pearson r = 0.109 slope = 0.0017 MGD/in n = 679rain 1–5 days ago (5 days) Pearson r = 0.093 slope = 0.0016 MGD/in n = 680rain 2–5 days ago (4 days) Pearson r = 0.086 slope = 0.0016 MGD/in n = 681rain 3–5 days ago (3 days) Pearson r = 0.077 slope = 0.0016 MGD/in n = 682rain 4–5 days ago (2 days) Pearson r = 0.068 slope = 0.0018 MGD/in n = 683rain 5–5 days ago (1 day) Pearson r = 0.037 slope = 0.0014 MGD/in n = 684rain over the last 7 days Pearson r = 0.117 slope = 0.0017 MGD/in n = 678rain 1–6 days ago (6 days) Pearson r = 0.104 slope = 0.0016 MGD/in n = 679rain 2–6 days ago (5 days) Pearson r = 0.098 slope = 0.0016 MGD/in n = 680rain 3–6 days ago (4 days) Pearson r = 0.088 slope = 0.0016 MGD/in n = 681rain 4–6 days ago (3 days) Pearson r = 0.079 slope = 0.0017 MGD/in n = 682rain 5–6 days ago (2 days) Pearson r = 0.054 slope = 0.0014 MGD/in n = 683rain 6–6 days ago (1 day) Pearson r = 0.044 slope = 0.0017 MGD/in n = 684rain over the last 8 days Pearson r = 0.116 slope = 0.0016 MGD/in n = 677rain 1–7 days ago (7 days) Pearson r = 0.104 slope = 0.0015 MGD/in n = 678rain 2–7 days ago (6 days) Pearson r = 0.099 slope = 0.0015 MGD/in n = 679rain 3–7 days ago (5 days) Pearson r = 0.090 slope = 0.0015 MGD/in n = 680rain 4–7 days ago (4 days) Pearson r = 0.080 slope = 0.0015 MGD/in n = 681rain 5–7 days ago (3 days) Pearson r = 0.057 slope = 0.0012 MGD/in n = 682rain 6–7 days ago (2 days) Pearson r = 0.045 slope = 0.0012 MGD/in n = 683rain 7–7 days ago (1 day) Pearson r = 0.023 slope = 0.0009 MGD/in n = 684rain over the last 9 days Pearson r = 0.120 slope = 0.0015 MGD/in n = 676rain 1–8 days ago (8 days) Pearson r = 0.109 slope = 0.0015 MGD/in n = 677rain 2–8 days ago (7 days) Pearson r = 0.105 slope = 0.0015 MGD/in n = 678rain 3–8 days ago (6 days) Pearson r = 0.097 slope = 0.0015 MGD/in n = 679rain 4–8 days ago (5 days) Pearson r = 0.088 slope = 0.0015 MGD/in n = 680rain 5–8 days ago (4 days) Pearson r = 0.067 slope = 0.0012 MGD/in n = 681rain 6–8 days ago (3 days) Pearson r = 0.056 slope = 0.0012 MGD/in n = 682rain 7–8 days ago (2 days) Pearson r = 0.039 slope = 0.0010 MGD/in n = 683rain 8–8 days ago (1 day) Pearson r = 0.035 slope = 0.0013 MGD/in n = 684rain over the last 10 days Pearson r = 0.125 slope = 0.0015 MGD/in n = 675rain 1–9 days ago (9 days) Pearson r = 0.114 slope = 0.0014 MGD/in n = 676rain 2–9 days ago (8 days) Pearson r = 0.110 slope = 0.0015 MGD/in n = 677rain 3–9 days ago (7 days) Pearson r = 0.104 slope = 0.0015 MGD/in n = 678rain 4–9 days ago (6 days) Pearson r = 0.096 slope = 0.0015 MGD/in n = 679rain 5–9 days ago (5 days) Pearson r = 0.077 slope = 0.0013 MGD/in n = 680rain 6–9 days ago (4 days) Pearson r = 0.067 slope = 0.0012 MGD/in n = 681rain 7–9 days ago (3 days) Pearson r = 0.053 slope = 0.0011 MGD/in n = 682rain 8–9 days ago (2 days) Pearson r = 0.050 slope = 0.0013 MGD/in n = 683rain 9–9 days ago (1 day) Pearson r = 0.039 slope = 0.0015 MGD/in n = 684rain over the last 11 days Pearson r = 0.142 slope = 0.0016 MGD/in n = 674rain 1–10 days ago (10 days) Pearson r = 0.132 slope = 0.0016 MGD/in n = 675rain 2–10 days ago (9 days) Pearson r = 0.128 slope = 0.0016 MGD/in n = 676rain 3–10 days ago (8 days) Pearson r = 0.123 slope = 0.0017 MGD/in n = 677rain 4–10 days ago (7 days) Pearson r = 0.118 slope = 0.0017 MGD/in n = 678rain 5–10 days ago (6 days) Pearson r = 0.102 slope = 0.0016 MGD/in n = 679rain 6–10 days ago (5 days) Pearson r = 0.095 slope = 0.0016 MGD/in n = 680rain 7–10 days ago (4 days) Pearson r = 0.083 slope = 0.0015 MGD/in n = 681rain 8–10 days ago (3 days) Pearson r = 0.082 slope = 0.0017 MGD/in n = 682rain 9–10 days ago (2 days) Pearson r = 0.078 slope = 0.0020 MGD/in n = 683rain 10–10 days ago (1 day) Pearson r = 0.076 slope = 0.0029 MGD/in n = 684rain over the last 12 days Pearson r = 0.142 slope = 0.0016 MGD/in n = 673rain 1–11 days ago (11 days) Pearson r = 0.132 slope = 0.0015 MGD/in n = 674rain 2–11 days ago (10 days) Pearson r = 0.128 slope = 0.0015 MGD/in n = 675rain 3–11 days ago (9 days) Pearson r = 0.123 slope = 0.0016 MGD/in n = 676rain 4–11 days ago (8 days) Pearson r = 0.117 slope = 0.0016 MGD/in n = 677rain 5–11 days ago (7 days) Pearson r = 0.103 slope = 0.0015 MGD/in n = 678rain 6–11 days ago (6 days) Pearson r = 0.096 slope = 0.0015 MGD/in n = 679rain 7–11 days ago (5 days) Pearson r = 0.086 slope = 0.0014 MGD/in n = 680rain 8–11 days ago (4 days) Pearson r = 0.083 slope = 0.0015 MGD/in n = 681rain 9–11 days ago (3 days) Pearson r = 0.076 slope = 0.0016 MGD/in n = 682rain 10–11 days ago (2 days) Pearson r = 0.067 slope = 0.0017 MGD/in n = 683rain 11–11 days ago (1 day) Pearson r = 0.023 slope = 0.0009 MGD/in n = 684rain over the last 13 days Pearson r = 0.152 slope = 0.0016 MGD/in n = 672rain 1–12 days ago (12 days) Pearson r = 0.142 slope = 0.0016 MGD/in n = 673rain 2–12 days ago (11 days) Pearson r = 0.138 slope = 0.0016 MGD/in n = 674rain 3–12 days ago (10 days) Pearson r = 0.134 slope = 0.0016 MGD/in n = 675rain 4–12 days ago (9 days) Pearson r = 0.129 slope = 0.0016 MGD/in n = 676rain 5–12 days ago (8 days) Pearson r = 0.116 slope = 0.0016 MGD/in n = 677rain 6–12 days ago (7 days) Pearson r = 0.111 slope = 0.0016 MGD/in n = 678rain 7–12 days ago (6 days) Pearson r = 0.102 slope = 0.0016 MGD/in n = 679rain 8–12 days ago (5 days) Pearson r = 0.101 slope = 0.0017 MGD/in n = 680rain 9–12 days ago (4 days) Pearson r = 0.094 slope = 0.0018 MGD/in n = 681rain 10–12 days ago (3 days) Pearson r = 0.085 slope = 0.0018 MGD/in n = 682rain 11–12 days ago (2 days) Pearson r = 0.053 slope = 0.0014 MGD/in n = 683rain 12–12 days ago (1 day) Pearson r = 0.055 slope = 0.0021 MGD/in n = 684rain over the last 14 days Pearson r = 0.155 slope = 0.0016 MGD/in n = 671rain 1–13 days ago (13 days) Pearson r = 0.146 slope = 0.0016 MGD/in n = 672rain 2–13 days ago (12 days) Pearson r = 0.141 slope = 0.0016 MGD/in n = 673rain 3–13 days ago (11 days) Pearson r = 0.137 slope = 0.0016 MGD/in n = 674rain 4–13 days ago (10 days) Pearson r = 0.131 slope = 0.0016 MGD/in n = 675rain 5–13 days ago (9 days) Pearson r = 0.118 slope = 0.0015 MGD/in n = 676rain 6–13 days ago (8 days) Pearson r = 0.113 slope = 0.0015 MGD/in n = 677rain 7–13 days ago (7 days) Pearson r = 0.106 slope = 0.0016 MGD/in n = 678rain 8–13 days ago (6 days) Pearson r = 0.105 slope = 0.0017 MGD/in n = 679rain 9–13 days ago (5 days) Pearson r = 0.099 slope = 0.0017 MGD/in n = 680rain 10–13 days ago (4 days) Pearson r = 0.090 slope = 0.0017 MGD/in n = 681rain 11–13 days ago (3 days) Pearson r = 0.060 slope = 0.0013 MGD/in n = 682rain 12–13 days ago (2 days) Pearson r = 0.058 slope = 0.0015 MGD/in n = 683rain 13–13 days ago (1 day) Pearson r = 0.031 slope = 0.0012 MGD/in n = 684rain over the last 15 days Pearson r = 0.163 slope = 0.0017 MGD/in n = 6700.16rain 1–14 days ago (14 days) Pearson r = 0.155 slope = 0.0016 MGD/in n = 671rain 2–14 days ago (13 days) Pearson r = 0.151 slope = 0.0016 MGD/in n = 672rain 3–14 days ago (12 days) Pearson r = 0.146 slope = 0.0016 MGD/in n = 673rain 4–14 days ago (11 days) Pearson r = 0.140 slope = 0.0016 MGD/in n = 674rain 5–14 days ago (10 days) Pearson r = 0.127 slope = 0.0015 MGD/in n = 675rain 6–14 days ago (9 days) Pearson r = 0.122 slope = 0.0016 MGD/in n = 676rain 7–14 days ago (8 days) Pearson r = 0.115 slope = 0.0016 MGD/in n = 677rain 8–14 days ago (7 days) Pearson r = 0.117 slope = 0.0017 MGD/in n = 678rain 9–14 days ago (6 days) Pearson r = 0.112 slope = 0.0018 MGD/in n = 679rain 10–14 days ago (5 days) Pearson r = 0.104 slope = 0.0018 MGD/in n = 680rain 11–14 days ago (4 days) Pearson r = 0.076 slope = 0.0015 MGD/in n = 681rain 12–14 days ago (3 days) Pearson r = 0.075 slope = 0.0016 MGD/in n = 682rain 13–14 days ago (2 days) Pearson r = 0.054 slope = 0.0015 MGD/in n = 683rain 14–14 days ago (1 day) Pearson r = 0.048 slope = 0.0019 MGD/in n = 684

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

Picking each plant’s strongest cell from the heatmap and plotting daily flow against rainfall over that window quantifies the slope — extra MGD of flow per inch of rainfall. The Commons line is real but shallow; the Village line is statistically indistinguishable from flat.

Red Hook Commons— x = cumulative rain over the last 15 days (heatmap peak r=0.31)

Village WWTP— x = cumulative rain over the last 15 days (heatmap peak r=0.16)

Even accepting the Commons response, a typical 1″ storm spread over two weeks adds only a few percent to base flow. The histogram below puts that in context: it shows every day of measured plant flow against each plant’s SPDES design capacity (0.050 MGD at the Village WWTP via sub-outfall 01A; 0.025MGD at Red Hook Commons via sub-outfall 01B). Days that fall to the right of each plant’s dashed capacity line are days the plant ran above its permitted monthly-average design flow — the operational condition that would justify drawing down the EQ tank.

So rainfall does affect flow at one of the two plants, by a small amount — and capacity excursions are rare even at the smaller Commons plant. Neither is in a regime that would explain a 10× budget overrun on pump-out volume.

Q: Why was this confusing in the first place?

The DEC monthly DMR forms include a column for the operator’s gauge readings of daily rainfall. Anyone looking at the forms would naturally use that column for any rainfall analysis. We did, initially. The first pass of this analysis showed an apparent weak rain-flow signal at Village WWTP, which seemed to support the rainwater-pump hypothesis.

Once we cross-checked the operator’s readings against NOAA observations from a CoCoRaHS station 1.4 miles from the village, the operator-reported series turned out to be 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″. The apparent Village fast-inflow signal was an artifact of those inconsistencies.

Paired days: 470 · Within 0.10″: 390 (83%) · Disagree by > 0.5″: 25
Pearson r = 0.599 · Operator total: 46.2 · NOAA total: 54.6 (operator 15% lower over the matched window)
Days where only one source reported: 4 operator-only, 137 NOAA-only.
137 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

Switching to NOAA as the source of truth removed the apparent signal and revealed the dry-day clustering above. A side effect of this finding: 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?

We cannot tell from the data the village currently has. The QuickBooks memos describe pumps but not their causes. We can’t reliably split events between the Village WWTP and Red Hook Commons. Daily flow data on the DEC forms is too coarse to identify process upsets in real time. The candidates we can’t rule in or out:

  • Equipment failures or maintenance backlog — pump-outs cluster in time (4 events in August, 4 in December, 4 in January), which fits an equipment-issue pattern more than a steady-state operating pattern.
  • 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.
  • Operator scheduling thresholds — the EQ tank may be drawn down at a fixed level the operator chose, regardless of what was filling it. If so, the cost is a function of operator choice, not plant condition.
  • Base-load drift — village sewer base flow may be growing fast enough to fill the EQ tank more often, with neither weather nor equipment as the proximate cause.
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