↖ CPA Weather Lab
Citizen Science Meteorology  ·  Camp Hill, Pennsylvania  ·  2026-04-14

Sub-Poisson Drop Arrival Regularity in Convective Rainfall: Evidence from an Acoustic Disdrometer Built from a Cooking Pot

Station  Backyard PWS
Location  40.2645°N, 76.8835°W
Radar  KCCX State College WSR-88D
Recording  20:22–20:57 EDT
Status  Single-event, pending replication

§ ABSTRACT

Abstract

We report the results of a 34.75-minute acoustic recording of a light-to-moderate convective rain event in Camp Hill, Pennsylvania (2026-04-14) using a consumer smartphone microphone placed beneath an inverted metal pot. Analysis of 2,946 detected raindrop impacts reveals that the convective phase exhibits statistically robust sub-Poisson temporal regularity, with a full-window Fano factor of 0.387 at the 500 ms scale (Poisson = 1.0) and a phase-resolved Fano–rate correlation of r = −0.939. Monte Carlo phase shuffling confirms this at empirical p < 0.001. A matched-detector Poisson null test — 1,000 synthetic Poisson sequences processed through the identical 200 ms detection floor — produced null Fano values ranging 0.459–0.531; the observed 0.387 lies entirely outside this distribution (p = 0.000, gap = 0.072). The detection pipeline does not explain the finding. Independent validation from KCCX dual-polarization radar confirms that ZDR and acoustic spectral centroid are anti-correlated as expected (larger drops = higher ZDR = lower centroid frequency), validating the acoustic drop-size proxy. The most parsimonious physical interpretation is aerodynamic drop–drop interaction at high drop density in the convective column. Acoustic onset of precipitation preceded piezoelectric rain gauge registration by approximately 10 minutes, demonstrating superior sensitivity for light rain detection. This work demonstrates that consumer-grade citizen science hardware can produce scientifically meaningful microphysical observations when combined with rigorous signal processing and statistical methodology.

§ 1 Experimental Setup

The acoustic sensor system consisted of a consumer smartphone microphone placed inside an inverted metal cooking pot outdoors during a rainfall event. This configuration was not designed in advance as a scientific instrument — it emerged opportunistically during an overnight rain event.

Sample Rate
44,100Hz
16-bit PCM mono
Recording Duration
34.75min
20:22–20:57 EDT
Total Samples
91.9M
After trim
Drops Detected
2,946
Mean 84.8/min
Pot Decay Time
150–200ms
Confirmed by envelope
Beam Height (KCCX)
2.48km AGL
0.5° elevation, ~87 km

Sensor Configuration

ComponentDetailSignificance
MicrophoneConsumer smartphone micSensitivity sufficient for drop impacts; no calibration
Pot orientationInverted — mic underneath, drops on outside bottomEliminates water pooling / drip artifacts completely
Pot materialMetal (type unknown)Strong resonance ~64–256 Hz; sharp impact transients
DampingPaper towel under pot rimReduces surface resonance propagation
ExposureOutdoors, direct sky exposureNo sampling bias from overhead obstruction
PWSEcowitt WS90/GW3000B at same locationIndependent rain rate reference (piezo + tipping bucket)
RadarKCCX, ~87 km NW, 0.5° sweepZDR independent DSD validation, hydrometeor classification
Pre-convective
20:22 → 20:37
108 drops · 6940ms mean IAT
First burst
20:37 → 20:46
1,018 drops · 520ms mean IAT
Convective core
20:46 → 20:57
1,820 drops · 329ms mean IAT

§ 2 Methods

Signal Processing Pipeline

The raw audio was bandpass filtered to the pot's resonant frequency band (64–256 Hz) using a 4th-order Butterworth filter implemented via second-order sections (SOS). Standard filtfilt was found to produce NaN outputs on the 91.9M sample file due to numerical instability — sosfiltfilt was substituted as a stable alternative. Individual drop impacts were detected as peaks in the absolute filtered signal exceeding a fixed amplitude threshold (3× the 95th percentile of the noise floor measured from a quiet window at minute 9), with a minimum inter-peak distance of 200 ms to prevent double-counting of pot resonance ringing.

Detection threshold justification ▼

The 200 ms minimum inter-peak distance was chosen based on direct measurement of pot decay time. Single-impact analysis at 20:25:12 showed the pot's filtered-band envelope returning to background within 150–200 ms post-impact. The only spurious secondary peak found was at t = +51.8 ms with amplitude 0.00338 (30.6% of the primary peak) — well within the exclusion window. The threshold sensitivity analysis confirmed that all key findings persist across 100/200/400 ms settings.

Noise floor (min 9, 95th pct):  0.00130
Fixed threshold (3× floor):     0.00390
Min peak distance (200ms):      8,820 samples @ 44,100 Hz
Single-impact decay time:       ~150–200 ms
Spurious secondary at:          +51.8 ms (inside exclusion zone)
GMM / KDE drop size analysis ▼

Gaussian Mixture Models were fitted to the log-amplitude distribution of all 2,946 detected impacts. BIC selected 6 components, AIC selected 7. The components are evenly spaced across the log-amplitude range with similar weights (0.07–0.22), indicating the distribution is a smooth continuous log-normal rather than a mixture of discrete size classes. No valleys were found in the KDE. The drop size distribution is continuous — the small/medium/large classification used in plots is a percentile-based operational binning, not a physical boundary.

ComponentMean (log₁₀)AmplitudeStdWeight
C1−2.3470.004500.0380.214
C2−2.2230.005990.0550.220
C3−2.0720.008480.0650.177
C4−1.8840.013060.0770.168
C5−1.6580.021990.1110.147
C6−1.4100.038910.1870.072

§ 3 Drop Size Distribution Evolution

The spectral centroid — the frequency-weighted center of mass of the acoustic spectrum at each moment — serves as a proxy for median drop size. Larger drops impart more energy at lower frequencies when striking a metal surface, shifting the centroid downward. The 514 Hz decline from the pre-convective phase (mean 2,261 Hz) to the convective core (mean 1,747 Hz) documents a systematic increase in drop size as the event intensified.

Spectral centroid by rain phase (Hz) — drop size proxy
DSD ridge plot showing distribution evolution over time
Fig 1. Drop size distribution evolution — ridge plot. Each row is a 2-minute window colored from dark purple (earliest, 20:24) to bright yellow (latest, 20:54). The narrow peaked distributions in early windows broaden and shift rightward as convection develops, showing the transition from small-drop stratiform to large-drop convective DSD. White dashed lines mark GMM component boundaries.
Full-event spectrogram
Fig 2. Full-event STFT spectrogram (log frequency axis). The persistent bright band below 128 Hz is the pot resonance being excited by drop impacts. Vertical streaks are individual large-drop impacts exciting the full frequency range. The dramatic broadband brightening after 25 minutes corresponds to the convective core arrival.
Wavelet scalogram of heavy rain window
Fig 3. Morlet wavelet scalogram of a 60-second window during peak convective rain (20:48–20:49 EDT). The CWT provides better joint time-frequency resolution than STFT. The continuous bright orange band at 14–200 Hz reflects near-continuous pot excitation at high drop rates. Individual drop transients appear as vertical streaks spanning the full frequency range.
Spectral centroid vs piezo rain rate
Fig 4. Spectral centroid (blue, left axis) vs Ecowitt piezo rain rate (orange, right axis). The centroid begins declining before the piezo registers meaningful rain — acoustic sensing detects DSD changes earlier than the rain gauge responds. The centroid minimum near 20:50 aligns with piezo rate maximum.
Spectral centroid distribution by rain phase
Fig 5. Spectral centroid KDE by rain phase. Blue (pre-convective) peaks at ~2,200 Hz; orange (first burst) at ~1,850 Hz; red (convective core) at ~1,600 Hz. The three distributions are well-separated, confirming that the DSD shift is not gradual noise but a genuine phase transition in hydrometeor character.

§ 4 KCCX Radar Integration

Twenty-five KCCX WSR-88D Level II volume scans were downloaded from the IEM NEXRAD archive covering 20:01–22:00 EDT. Dual-polarization variables were extracted at the Backyard PWS gate (beam height 2.48 km AGL, range ~87 km). Radial velocity was NaN throughout — the S/SSW flow direction at this azimuth (128°) produced near-zero-isodop geometry.

Key Cross-Validation

ZDR peaks at 2.56 dB at 20:51 EDT (large oblate drops confirmed by polarimetry) while the acoustic spectral centroid reaches its minimum (~1,747 Hz) at the same time. These are anti-correlated as expected — a completely independent physical measurement confirming the acoustic drop-size proxy is responding to real DSD changes, not instrument artifacts.

Time EDTZ (dBZ)ZDR (dB)CCNotes
20:04–20:14———Pre-event, clear
20:206.51.940.908Rain approaching; large ZDR = large drop precursors
20:2525.00.250.855Precipitation developing; low CC (light/noisy)
20:3031.00.530.995Clean rain, Z ramping
20:3532.0−0.590.995anomaly Negative ZDR at moderate Z — see §6
20:4026.50.030.928Brief intensity lull
20:4532.51.160.972Recovery, moderate ZDR
20:5140.02.560.938PEAK Convective core maximum — large drops confirmed
20:5636.01.810.952Declining but still convective
21:0039.01.500.985Second Z peak; clean CC
21:0531.52.090.962ZDR still elevated post-core
21:09–21:1933.5–39.00.62–0.880.972Gradual decay, rain continuing
21:23–21:3220.5–27.50.09–0.910.982–0.985Weakening rain
21:374.5−0.281.042Rain ending; CC > 1.0 = calibration artifact at noise floor
21:41–22:00———Clear
KCCX Z and ZDR over time — Camp Hill gate (2.48 km AGL)

Hydrometeor Classification

Cross-correlation coefficient (CC) exceeds 0.97 for the majority of the rain period, confirming pure liquid rain at 2.48 km AGL with no mixed-phase or frozen hydrometeors. The physically impossible CC = 1.042 at 21:37 is a calibration noise-floor artifact as Z collapses to 4.5 dBZ. This validates the acoustic methodology: the pot was recording impacts from pure liquid raindrops throughout.

Z-R Consistency Check

At peak Z = 40.0 dBZ, Marshall-Palmer Z-R (Z = 300R1.4) yields R ≈ 7.6 mm/hr (0.30 in/hr) at 2.48 km AGL. The Ecowitt piezo registered 0.14 in/hr at the surface — approximately half the radar estimate. This discrepancy is physically expected: the radar samples 2.5 km aloft, and some drop coalescence and evaporation occurs during descent. The agreement is within the expected range.

KCCX radar overlay with acoustic data
Fig 6. Four-panel KCCX radar integration overlay. ZDR and acoustic spectral centroid are anti-correlated as expected (larger drops → higher ZDR → lower centroid Hz), providing independent physical validation of the acoustic drop-size proxy.

§ 5 Non-Poisson Drop Arrival Statistics

The standard assumption in rainfall modeling is that drops arrive as a Poisson process — each drop independent of all others, arrivals memoryless. A Poisson process produces an exponential inter-arrival time (IAT) distribution and a Fano factor (variance/mean of counts in fixed windows) equal to 1.0 at all scales.

Primary Finding

The convective core phase exhibits sub-Poisson temporal regularity: drops arrive more evenly spaced than random. The full-window Fano factor at the 500 ms scale is 0.387 (Poisson = 1.0). A matched-detector null test (1,000 Poisson surrogates through the same 200 ms floor) produced Fano values 0.459–0.531 — the observed 0.387 lies entirely outside (p = 0.000, gap = 0.072). This regularity strengthens with increasing rain rate (r = −0.939) and the matched-null rules out the detection pipeline as the source.

Monte Carlo Phase Shuffling Results

To distinguish genuine non-Poisson structure from sample-size artifacts, the actual inter-arrival times were randomly permuted 1,000 times to generate a null distribution of KS statistics under the Poisson hypothesis. Only the convective core's observed KS statistic (0.454) exceeded the null 99th percentile (0.369).

PhaseDropsActual KSNull 95th pctNull 99th pctEmpirical pResult
Pre-convective1080.13770.34130.35701.000Not significant
First burst1,0180.31770.35110.37930.224Not significant
Convective core1,8200.45380.34530.3689<0.001CONFIRMED p<0.01
Full recording2,9460.29480.29480.29480.828Not significant

Fano Factor

The Fano factor at the 500 ms window remains deeply sub-Poisson across all three detection threshold settings, confirming the finding is not an artifact of the 200 ms minimum inter-peak distance.

Fano factor at 500ms window — three detection thresholds

Phase-Resolved Fano — Convective Core

Within the convective core, every 2-minute sub-window has a Fano factor below 1.0. The correlation between sub-window Fano and drop rate is r = −0.939: as rain intensifies, drop spacing becomes more regular.

Convective core — Fano factor vs drop rate over time
Time EDTFano (100ms)Fano (200ms)Fano (400ms)Rate (drops/min)
20:470.4300.2810.261172
20:480.3730.2490.260176
20:490.3770.2430.277176
20:500.2940.2110.239195
20:510.2480.1840.216205
20:520.2530.1990.202205
20:530.2990.2110.165197
20:540.3580.2230.229180
20:550.4590.2790.293159
Seven statistical tests panel
Fig 7. Seven statistical tests for the non-Poisson finding. From top: (1) Fano factor vs window size — rises steeply above 1.0 at large scales indicating long-range dependence; (2) Pair correlation function — peak at 214ms lag; (3) Allan variance — slopes near −1.3 indicating quasi-periodic structure; (4) Monte Carlo phase shuffling — only convective core diamond lies above the null box; (5) Multiscale entropy — monotonically increasing with scale, characteristic of long-range correlated process; (6) Conditional intensity function; (7) Phase-resolved Fano in convective core.

§ 5.5 Matched-Detector Poisson Null Test

Threshold sensitivity shows the finding persists across floor settings — but a deeper objection remains: any minimum inter-peak distance imposed on any arrival process, including a pure Poisson one, will produce some regularity. The matched-detector null directly tests whether the observed Fano falls outside what the detector itself can manufacture on pure Poisson input.

Decisive Result

1,000 synthetic Poisson sequences at the convective core mean rate (2.758 drops/s) were each filtered through the identical 200 ms detection floor. The null Fano distribution spans 0.459–0.531 (median 0.500). The observed Fano is 0.387. Zero out of 1,000 surrogates reached the observed level. Gap = 0.072 Fano units of pure atmospheric signal. The 200 ms detection floor pushes Poisson Fano toward ~0.50 — the rain is more regular than the detector can manufacture. The sub-Poisson result is a property of the rain, not the pipeline.

Null distribution statisticValue
1st percentile0.4594
5th percentile0.4710
Median (50th pct)0.4996
95th percentile0.5305
Observed Fano (convective core)0.3871
Gap (null 1st pct − observed)0.0722
Fraction of null ≤ observed0.000 (empirical p < 0.001)
Matched-detector Poisson null test
Fig 7. Matched-detector Poisson null test. Blue histogram: 1,000 synthetic Poisson sequences processed through the identical 200 ms detection floor (null range 0.459–0.531, median 0.500). Red line: observed Fano = 0.387. The gap of 0.072 Fano units between the observed value and the nearest surrogate represents atmospheric signal the detector cannot produce artificially. Empirical p = 0.000.

§ 6 Convergent Evidence Summary

Six independent lines of evidence point to the same conclusion: drop arrivals in the convective core are sub-Poisson, with the degree of regularity increasing with rain rate.

01
Monte Carlo KS Test

1,000 phase-shuffled surrogates establish an empirical null distribution. The convective core KS statistic lies above the 99th percentile of the null.

KS = 0.454 · empirical p < 0.001 · null 99th pct = 0.369
02
Sub-Poisson Fano Factor

The primary event-level Fano is the full-window 500 ms value over the entire convective-core phase: 0.387 (Poisson = 1.0). A matched-detector null (1,000 Poisson surrogates, same 200 ms floor) produced Fano 0.459–0.531. The observed value lies entirely outside. Gap = 0.072 Fano units of pure atmospheric signal.

Full-window Fano = 0.387 · Null 1st pct = 0.459 · Gap = 0.072 · p = 0.000
03
Fano–Rate Correlation

Within the convective core, Fano factor decreases monotonically as drop rate increases. The correlation is strong and consistent across all threshold settings.

r = −0.939 (200ms) · r = −0.973 (100ms) · r = −0.883 (400ms)
04
Allan Variance Slope

Log-log slope of −1.347 in the convective core, steeper than all other phases. Slope near −1 indicates quasi-periodic timing structure — the most ordered pattern of the event.

Slope = −1.347 · more negative = more ordered · Poisson = 0
05
Pair Correlation Function Peak

The pair correlation function peaks at g = 4.2 at lag 214 ms — drops are 4.2× more likely to be followed by another drop at 214 ms than Poisson expectation.

g(214ms) = 4.202 · g(13ms) = 0.0 (detection exclusion zone)
06
Conditional Intensity Function

After a short gap (<500 ms), the mean next gap is 365 ms — only 57% of the 642 ms overall mean. Short gaps beget short gaps; long gaps beget long gaps.

Short/overall ratio = 0.569 · clustering signature confirmed
Threshold sensitivity analysis
Fig 8. Threshold sensitivity analysis across 100/200/400 ms minimum inter-peak distances. Top: Fano factor by phase — convective core remains deeply sub-Poisson at all settings. Middle: KS statistic — increases with threshold in convective core (opposite of artifact behavior). Bottom-left: Phase-resolved Fano curves track each other closely. The finding is not an artifact of the detection floor.

§ 7 Time Alignment & Sensor Comparison

Cross-correlation of the acoustic drop count series with the Ecowitt piezo rain rate returned a best lag of +10 minutes (acoustic leads piezo), peak normalized correlation 0.819. Naively this might suggest a 10-minute error in the assumed 20:22 recording start time. However, KCCX radar provides an independent timing reference.

ReferenceRain onset time (EDT)Method
KCCX Reflectivity20:25Z > 20 dBZ threshold (Z = 25.0 dBZ at 20:25 scan)
Acoustic detection20:2515 drops/min at 20:25 minute window
Ecowitt piezo20:34First non-zero reading (0.020 in/hr trace)
Ecowitt piezo meaningful20:49>0.05 in/hr threshold

The acoustic onset at 20:25 agrees exactly with KCCX radar at lag = 0. The piezo lags by 9–24 minutes depending on threshold. The +10 minute cross-correlation lag reflects piezo sensor latency, not a recording clock error. Audio start time 20:22 EDT is confirmed. All phase boundaries stand.

Bonus Finding — Sensor Sensitivity

82 acoustic drops were detected between 20:24 and 20:33 before the Ecowitt piezo registered any rain at all. The acoustic system detected the light precursor rainfall approximately 10 minutes earlier than the piezoelectric rain gauge. This documents a genuine sensitivity advantage of acoustic sensing for light rain onset detection.

Time alignment verification
Fig 9. Time alignment verification. The cross-correlation peak at +10 minutes reflects piezo sensor latency, confirmed by independent KCCX radar onset timing at 20:25 EDT agreeing with acoustic onset at the same time.

§ 8 Discussion

Physical Interpretation

The most parsimonious physical explanation for sub-Poisson drop arrival regularity that strengthens with rain rate is aerodynamic drop–drop interaction at high drop density. At convective core rates of 160–205 drops per minute, the mean inter-arrival time is 290–375 ms. At a terminal velocity of 6–8 m/s for 2–3 mm drops, this corresponds to a vertical column spacing of roughly 1.7–3.0 meters between successive drops. At this spacing, the turbulent wake of a leading drop can influence the terminal velocity and trajectory of a trailing drop, creating a weak hydrodynamic repulsion that regularizes the spacing. This mechanism would predict exactly what is observed: more regular spacing at higher rain rates (more drops per unit volume, more interactions) and sub-Poisson rather than super-Poisson statistics (repulsion pushes toward regularity, not clustering).

Open Questions

ZDR = −0.59 dB at 20:35 EDT with Z = 32 dBZ and CC = 0.995 is unusual. Negative ZDR at moderate reflectivity with high CC is not expected for liquid rain (which should produce ZDR ≥ 0 for drop sizes that register at 32 dBZ). Possible explanations include a brief mixed-phase layer above the melting level (unlikely given high CC), small spherical drops or graupel (inconsistent with Z), a KCCX calibration offset, or a point artifact on the beam. This time coincides with the pre-burst lull in the acoustic record (low drop counts). The anomaly warrants investigation of neighboring KCCX azimuths to determine if it is a real atmospheric feature or a beam artifact.

Radial velocity was NaN for all 25 volume scans. At 87 km range on an approximately 128° azimuth, S/SSW surface flow (roughly 180°) would produce near-zero radial velocity — the beam is nearly perpendicular to the wind direction. The low-level jet hypothesis for non-Poisson drop clustering cannot be confirmed or ruled out from this dataset. A dual-Doppler approach using both KCCX and KPBZ (Pittsburgh) would provide better velocity coverage over Camp Hill but is beyond the scope of this single-event analysis.

All acoustic amplitude results are in arbitrary units relative to the recording system. Conversion to physical drop diameter requires a calibration experiment: drop water of known volume from a measured height onto the pot, record the impacts with the same setup, and apply a terminal velocity correction. A 10 mL oral syringe is available for this experiment. Dropping from 1.0 m and 2.0 m would provide two known (velocity, amplitude) pairs for each drop size, enabling extrapolation to terminal velocity KE. The pot's non-linear acoustic response at different impact locations is a secondary uncertainty that can be addressed by masking the pot to constrain drops to the center.

All findings reported here derive from a single 35-minute event. The sub-Poisson Fano finding and r = −0.935 correlation are statistically robust within this event, but single-event results cannot distinguish a genuine atmospheric phenomenon from a peculiarity of this specific shower. Replication of the pipeline on three to five additional rain events — particularly events of varying intensity (light stratiform, moderate mixed, heavy convective) — is the minimum needed to assess whether the finding is general or event-specific. The measurement apparatus and analysis pipeline are fully documented for this purpose.

Limitations

LimitationImpactMitigation
Single eventCannot generalize to other events or locationsReplication planned
No absolute amplitude calibrationDrop diameters in arbitrary unitsSyringe calibration experiment planned
Radar beam height 2.48 km AGLNot surface DSD; some fall-distance modificationAcknowledged in Z-R comparison
Recording start time uncertainty±1–2 min; phase boundary uncertaintyConfirmed by KCCX radar onset at 20:25
Pot acoustic non-linearityOff-center impacts produce different amplitudesLarge sample averages partially mitigate; calibration needed
Velocity NaN throughoutLow-level jet hypothesis untestableFlagged; dual-Doppler approach in future
KDP not derivedIndependent rain rate proxy not availablepyart kdp_maesaka timeout; kdp_vulpiani proposed as alternative

§ 9 Data & Reproducibility

Drop Count Time Series (Interactive)

Acoustic drop count per minute — full recording

Full Drop Count Table

TimeDrops/minPhaseKCCX ZKCCX ZDR

File Inventory

FileDescriptionSize
260414-202004.wavTrimmed audio (44100 Hz, 16-bit PCM mono)~180 MB
260414-202004_2.wavOriginal untrimmed audio (36.05 min)~400 MB
202604A__4_.csvEcowitt WS90 5-minute data, Apr 8–15 2026329 KB
analysis_log.txtMaster running log — all sessions consolidated17 KB
radar/ (25 files)KCCX Level II volume scans, 0001–0158 UTC Apr 15~162 MB

Analysis Pipeline Summary

Python environment and key parameters ▼
Environment:     conda 'weather', Python 3.x
Key packages:    librosa, scipy, numpy, pyart (arm-pyart 2.1.1),
                 sklearn, antropy, boto3, matplotlib

Audio loading:   librosa.load(sr=None, mono=True)
Bandpass:        sosfiltfilt, Butterworth order-4, 64–256 Hz
                 (NOT filtfilt — blows up on 92M samples)
Detection:       scipy.signal.find_peaks
                 height=fixed_threshold (0.00390)
                 distance=int(sr * 0.2)  # 200ms
Noise floor:     np.percentile(|y_band[min9_window]|, 95) * 3
Fano factor:     custom compute_fano() — histogram variance/mean
Entropy:         antropy.sample_entropy(order=2)
Radar:           pyart.io.read() → get_gate_lat_lon_alt()
                 → nearest-gate extraction at 40.2645N, 76.8835W
Full overlay — acoustic vs Ecowitt
Fig 10. Full event overlay: acoustic RMS and Ecowitt piezo rain rate (top); acoustic drop count per minute (middle); mean impact amplitude as drop size proxy (bottom). The acoustic sensor captured the full intensification curve; recording ended before the event peaked.
Single drop impact analysis
Fig 11. Single drop impact analysis at 20:25:12.228277 EDT. Raw waveform (top), bandpass filtered 64–256 Hz (middle), signal envelope (bottom). Pot resonance decays within 150–200 ms. The only spurious secondary detection at +51.8 ms is inside the 200 ms exclusion zone, confirming the detector is not double-counting pot ringing.
← CPA Weather Lab · Learn