Zambretti Forecaster

The Zambretti Forecaster is a weather forecasting tool in the form of a circular slide rule introduced in 1920.  It claims to accurately predict near-term weather based on barometric pressure, the trend in the pressure (rising, steady, or falling), and wind direction. It relies on the fundamental meteorology of pressure fronts. Watch any TV weather forecast and you will see high- and low-pressure areas prominently displayed on the map. The boundaries between pressure areas are strongly associated with wind and precipitation. Additionally, high-pressure is usually associated with fair weather while low-pressure is associated with cloudy, rainy, or snowy weather.

The are many interesting things about the Zambretti Forecaster. First, there was no Mr. or Ms. Zambretti, rather, it was a trade name used by Negretti and Zambra, a famous London instrument-making company from the mid-19th Century through 1999. Second, there was a modern reproduction on sale in the mid-aughts of the 21st Century though it does not appear to be currently available.

Kevin Scott, Ph. D. has reverse engineered the modern reproduction in very fine work reported at He derived an algorithm that is easily implemented in computer code.

Since the D1M-WX1 weather stations accurately monitor barometric pressure, it is easy to apply the Zambretti Forecaster technique to a ThingSpeak channel. My adaptation of Dr.  Scott’s algorithm is provided below as a snippet for a MatLab visualization. To see this in action, open The Zambretti Forecast is at the bottom of the Current Values display.

Next steps:

  1.  Consider including the rate of barometric change in the forecast.
  2. Track the Zambretti Forecast against weather service predictions.
  3. Publish a pdf with instructions for making your own Zambretti Forecaster.

MATLAB code snippet:

 Zambretti Forecaster by
 Karl W. Berger
 08 October 2018
 based on work by Dr. Kevin F. Scott
 curSLP is the current Sea Level Pressure in millibars or hPa
 baroTrend is an index of the change in SLP over three hours:
 mb    Indication            baroTrend
 >  6.0 Rising Very Rapidly   4
 >  3.6 Rising Quickly        3
 >  1.6 Rising                2
 >  0.1 Rising Slowly         1
 > -0.1 Steady                0
 > -1.6 Falling Slowly       -1
 > -3.6 Falling              -2
 > -6.0 Falling Quickly      -3
 <=-6.0 Falling Very Rapidly -4

risingIndex = 1;         % set to baroTrend index for 
fallingIndex = -1;       % determination of rising or falling
zambretti = "Forecast";  % forces 'zambretti' to be a string
if baroTrend <= fallingIndex  %% FALLING %%
    if curSLP > 1045
        zambretti = "A: Settled Weather";
    elseif curSLP > 1032
        zambretti = "B: Fine Weather";
    elseif curSLP > 1020
        zambretti = "D: Fine, Becoming Less Settled";
    elseif curSLP > 1014
        zambretti = "H: Fairly Fine, Showers Later";
    elseif curSLP > 1006
        zambretti = "O: Showery, Becoming More Unsettled";
    elseif curSLP > 1000
        zambretti = "R: Unsettled, Rain Later";
    elseif curSLP > 993
        zambretti = "U: Rain At Time, Worse Later";
    elseif curSLP > 987
        zambretti = "V: Rain At Times, Becomng Very Unsettled";
        zambretti = "X: Very Unsettled";
elseif baroTrend >= risingIndex  %% RISING %%
    if curSLP > 1025
        zambretti = "A: Settled Weather";
    elseif curSLP > 1016
        zambretti = "B: Fine Weather";
    elseif curSLP > 1009
        zambretti = "C: Becoming Fine";
    elseif curSLP > 1003
        zambretti = "F: Fairly Fine, Improving";
    elseif curSLP > 997
        zambretti = "G: Fairly Fine, Possible Showwers Early";
    elseif curSLP > 992
        zambretti = "I: Showers Early, Improving";
    elseif curSLP > 986
        zambretti = "J: Changeable, Mending";
    elseif curSLP > 980
        zambretti = "L: Rather Unsettled, Clearing Later";
    elseif curSLP > 973
        zambretti = "M: Unsettled, Probably Improving";
    elseif curSLP > 967
        zambretti = "Q: Unsettled, Short Fine Intervals";
    elseif curSLP > 961
        zambretti = "T: Very Unsettled, Finer At Times";
    elseif curSLP > 953
        zambretti = "Y: Stormy, Possibly Improving";
        zambretti = "Z: Stormy, Much Rain";
else %% STEADY %%
    if curSLP > 1028
        zambretti = "A: Settled Weather";
    elseif curSLP > 1017
        zambretti = "B: Fine Weather";
    elseif curSLP > 1011
        zambretti = "E: Fine, Possible Showers";
    elseif curSLP > 1003
        zambretti = "K: Fairly Fine, Showers Likely";
    elseif curSLP > 996
        zambretti = "N: Showery, Bright Intervals";
    elseif curSLP > 991
        zambretti = "P: Changeable, Some Rain";
    elseif curSLP > 984
        zambretti = "S: Unsettled, Rain At Times";
    elseif curSLP > 978
        zambretti = "W: Rain At Frequent Intervals";
    elseif curSLP > 966
        zambretti = "X: Very Unsettled, Rain";            
        zambretti = "Z: Stormy, Much Rain";
%% End of Zambretti snippet %%

Leave a Reply