Notes - MADIS Surface Variables
Jump to Note # 5 10 15 20 25 30 35 40
- Dewpoint temperature and/or relative humidity are the moisture variables stored in the database. The user can select either of these variables, or select dewpoint depression, specific humidity, absolute humidity, or water vapor mixing ratio which will then be calculated by the MADIS API. If available, the stage 3 QC results from the dewpoint variable will be used for any of the calculated variables. If this isn't available, the QC results from the stored RH variable will be used. Also note that pressure is needed for the absolute humidity conversion; for the COOP dataset this is done by using the U.S. Standard Atmosphere calculation to calculate pressure from station elevation.
- As altimeter and station pressure can be calculated from each other, for datasets without altimeter (MARITIME) the altimeter will be calculated by the MADIS API, and for datasets without station pressure (METAR, SAO, 1-minute ASOS) that variable will be calculated as well. With the MESONET dataset, if the stored variable isn't the one requested by the user for each particular station, the calculated value will be returned. In all cases, the stage 3 QC from the altimeter variable (if available) will be applied.
- The 3 hour pressure change value consists of the numeric pressure change
value, with a sign applied per the value in the character of 3h pressure
change variable. The latter variable is coded:
Value Meaning ----- ------- 0 pressure same or higher than 3 hours ago 1 increasing then steady 2 increasing 3 decreasing or steady, then increasing 4 steady 5 pressure same or lower than 3 hours ago 6 decreasing 7 steady or increasing, then decreasing
- Air temperature is the temperature variable stored in the database. The user can optionally select virtual temperature, which will then be calculated by the MADIS API. The QC results from air temperature will apply in either case. Also note that if virtual temperature cannot be calculated (missing or bad dewpoint or pressure), and the air temperature passed all QC checks, the air temperature will be returned instead, and a QC data descriptor value of "T" will be assigned. As with the absolute humidity conversion mentioned above, the virtual temperature conversion done for the COOP dataset uses pressure calculated from the station elevation.
- Wind speed and direction are reported and stored in the database. The user can optionally select u & v wind components and those will be calculated and returned. The QC results from speed and direction will be used In either case, and if one of the map projections has been selected via the MSETDOM call, the winds will be rotated to match the projection. The documentation in the COOP cdl was changed to remove the height of the anemometer. All anemometers are at 10 meters heights except for (GYX, TANM3, and STYN6) which are at 3 meters.
- Data platform type (MARITIME):
Value Meaning ----- ------- 0 stationary (moored buoy or CMAN) 1 moving (drifting buoy or ship)
Data platform type (1-minute ASOS):
Value Meaning ----- ------- 1 Federal ASOS 2 Federal AWOS 3 Federal AOS 4 Non-fed ASOS 5 Non-fed AWOS 6 Non-fed AOS
Data platform type (COOP):
Value Meaning ----- ------- < 100 Phase II site (regional hub) 100 Phase II site (GOES/HADS) 200 Phase I site (direct connect) 300 Phase I site (GOES/HADS)
The modernized NWS Cooperative Observer sites can provide different variables, and on different schedules, dependent both on the type of site (Phase I or II) and on the processing done as part of reformatting the data sent over the various communications systems in use. Here are the primary differences:
- Phase I sites only report a single temperature observation per hour, valid at minute 0.
- Phase II GOES/HADS sites only report once per hour, but the reports contain 5-minute observations from the last hour.
9/26/06: The Phase II GOES/HADS sites are being phased out, as part of an upgrade where the COOP network has been gradually rolling in a new software load over the last several months (and it's not done yet). The new load is indicated in MADIS as data platform types 2-99 (currently only 2 is in use). This upgrade has changed what variables are available from the Phase II stations. Variables that are no longer available for COOP PLATTYP 2 stations: TD1H hourly average dewpoint temperature RH relative humidity RH1H hourly average relative humidity Q specific humidity Q1H hourly average specific humidity DPD dewpoint depression DPD1H hourly average dewpoint depression AH absolute humidity AH1H hourly average absolute humidity WVMR water vapor mixing ratio TV virtual temperature T1H hourly average temperature TV1H hourly average virtual temperature DD1H hourly average wind direction DD24H daily average wind direction FF1H hourly average wind speed FF24H daily average wind speed U1H hourly average u wind component U24H daily average u wind component V1H hourly average v wind component V24H daily average v wind component PCPTOTL total precipitation PCP1H accumulated precip - 1h PCP24H accumulated precip - 24h PCPUDAY accum. precip - user-defined day UDSTART user-defined day start HHMM PCPRATE precipitation rate T24MIN 24 hour minimum temperature T24MAX 24 hour maximum temperature SOILM2 soil moisture percent - 2 inch SOILM4 soil moisture percent - 4 inch SOILM8 soil moisture percent - 8 inch SOILM20 soil moisture percent - 20 inch SOILM40 soil moisture percent - 40 inch SOILT2 soil temperature - 2 inch SOILT4 soil temperature - 4 inch SOILT8 soil temperature - 8 inch SOILT20 soil temperature - 20 inch SOILT40 soil temperature - 40 inch DDMAX1H wind dir at hourly max wind speed FFMAX1H hourly maximum wind speed GSRD5M global solar radiation - 5min STNSPC1 station specific #1 STNSPC2 station specific #2 T24MINT time of 24 hour minimum temperature T24MAXT time of 24 hour maximum temperature Variables that have been added for COOP PLATTYP 2 stations: DDGUST wind dir at gust (5m) FFGUST wind gust (5m) PCP5M accumulated precip - 5m
- The user can select either accumulated precip - 1h or precipitation rate.
Whichever variable is actually stored in the MADIS database will be converted
to the form desired by the caller.
OMO -- One Minute ASOS (listed as HFMETAR) PCP1H is an accum starting ~45 minutes after the hour until 44 minutes after the next hour.
- Precipitation intensity (MESONET):
Value Meaning ----- ------- 0 intensity info not available 1 none 2 light 3 moderate 4 heavy 5 slight 6 other
Stations measuring precipitation type and intensity may take observations with one or two sensors. Therefore, an array of 2 elements will be returned for each record, and the caller should dimension the array to (2,200000).
- Precipitation type (MESONET):
Value Meaning ----- ------- 0 no precipitation 1 precipitation present but unclassified 2 rain 3 snow 4 mixed rain and snow 5 light 6 light freezing 7 freezing rain 8 sleet 9 hail 10 other 11 unidentified 12 unknown 13 frozen 14 ice pellets 15 recent 29 RPU-to-maxSensor communications failure 30 sensor failure
Stations measuring precipitation type and intensity may take observations with one or two sensors. Therefore, an array of 2 elements will be returned for each record, and the caller should dimension the array to (2,200000).
- The sky cover variables (METAR, SAO, MESONET, 1-minute ASOS)
can have up to 6 different layers (array elements) for each record.
The "sky cover layer base" variable is a number, so it should be
dimensioned to (6,200000) by the caller. The character "sky cover"
variable gives information about each layer reported in the sky cover
layer base variable, and has 8 characters for each of the 6 layers, so
it should be dimensioned character*8 skycover(6,200000). Note that
the 1-minute ASOS dataset can only go up to 3 layers, but
to allow for mixing its data with the other surface providers 6
layers (the last 3 always missing) will be returned.
For more information on these variables, see section 9.4.2 of Federal Meteorological Handbook 1 (FMH-1). A PDF version of FMH-1 is available at https://www.ofcm.gov/fmh-1/fmh1.htm.
Sky cover values:
Value Meaning Summation amount of layer ----- ------- ------------------------- VV Vertical Visibility 8/8 SKC or CLR Clear 0 FEW Few 1/8 - 2/8 SCT Scattered 3/8 - 4/8 BKN Broken 5/8 - 7/8 OVC Overcast 8/8 1. CLR is used at automated stations when no layers at or below 12,000 ft are reported; SKC is used at manual stations when no layers are reported. 2. Any layer amount less than 1/8 is reported as FEW.
- Height of the lowest cloud layer (MARITIME):
Value Meaning ----- ------- 0 0 to 100 ft 1 200 to 300 ft 2 400 to 600 ft 3 700 to 900 ft 4 1000 to 1900 ft 5 2000 to 3200 ft 6 3300 to 4900 ft 7 5000 to 6500 ft 8 7000 to 8000 ft 9 8500 or higher or no clouds -1 unknown or cloud base below surface of station
- Low level cloud type (MARITIME):
Value Meaning ----- ------- 0 no Cu, Cb, Sc, or St 1 Cu w/ little vertical extent 2 Cu w/ moderate or great vertical extent 3 Cb w/out fibrous or striated upper part 4 Sc formed by spreading Cu 5 Sc not formed by spreading Cu 6 St or ragged St 7 ragged St or ragged Cu 8 Cu and Sc w/ bases at different levels 9 Cb w/ fibrous or striated upper part -1 low clouds not visible (obscured)
- Middle level cloud type (MARITIME):
Value Meaning ----- ------- 0 no Ac, As, or Ns 1 semi-transparent As 2 opaque As, or Ns 3 semi-transparent Ac predominant 4 Ac continually changing in appearance 5 Ac invading the sky 6 Ac formed by spreading of Cu or Cb 7 double layered Ac or thick Ac; or Ac & As 8 turreted Ac or Ac in tufts 9 Ac of a chaotic sky -1 middle clouds not visible (obscured)
- High level cloud type (MARITIME):
Value Meaning ----- ------- 0 no Ci, Cs, or Cc 1 Ci in filaments or hooks 2 dense Ci & turreted Ci & Ci in tufts 3 dense Ci orig from Cb, present 4 Ci invading the sky 5 Cs not exceeding 45 degrees altitude 6 Cs exceeding 45 degrees altitude 7 Cs covering the whole sky 8 Cs not invading the sky 9 Cc alone, or Cc more than (Ci & Cs) -1 high clouds not visible (obscured)
- Tide indicator (MARITIME):
Value Meaning ----- ------- 0 Data not available 1 Low tide, observed tide below predicted level 2 Low tide, observed tide same as predicted level 3 Low tide, observed tide above predicted level 4 Neither low nor high tide, observed tide below predicted level 5 Neither low nor high tide, observed tide same as predicted level 6 Neither low nor high tide, observed tide above predicted level 7 High tide, observed tide below predicted level 8 High tide, observed tide same as predicted level 9 High tide, observed tide above predicted level
- The dewpoint & temperature from tenths of a deg C variables (METAR) are decoded from the remarks section of the raw reports, for designated stations only, and have values rounded to the nearest 0.1 degree C. The primary temperature and dewpoint variables are reported from all stations, and in the raw reports, are rounded to the nearest whole degree C.
- Road state (MESONET):
Value Meaning ----- ------- 0 No report 1 Dry 2 Moist 3 Moist and chemically treated 4 Wet 5 Wet and chemically treated 6 Ice 7 Frost 8 Snow 9 Snow/Ice watch 10 Snow/Ice warning 11 Wet above freezing 12 Wet below freezing 13 Absorption 14 Absorption at dewpoint 15 Dew 16 Black ice warning 17 Other 18 Slush
- Automated station type (METAR, SAO):
Value Meaning ----- ------- AO1 automated station without precipitation discriminator (METAR) AO2 automated station with precipitation discriminator (METAR) AUTO2 automated station (SAO) AUTO4 automated station (SAO) AUTO7 automated station (SAO) AUTO8 automated station (SAO) blank manual station
- Report type (METAR, SAO):
Value Meaning ----- ------- METAR scheduled report (METAR) SPECI report triggered by SPECI criteria (METAR) (see FMH-1) SA scheduled report (SAO)
- The coded values for the present weather variable (METAR, MARITIME) are too
extensive to list in this document. See FMH-1, particularly section 12.6.8.
A PDF version of FMH-1 is available at
https://www.ofcm.gov/fmh-1/fmh1.htm.
The coded values for the COOP present weather variable are listed below:
Value Meaning ----- ------- - No report FG Fog IE Ice GL Glaze TS Thunder GR Hail DW Damaging Winds RA Rainy SN Snowy
- The station location (METAR, MESONET, COOP) generally contains a geographic
description of the station's location, typically including the city, state,
and sometimes the country.
With the MESONET dataset, in addition, characters (40:50) are used to denote the "subprovider", if any. Some (but not all) mesonets contain data from a number of smaller networks. In these cases, the "subprovider" for each station is the name of the smaller network. If this field is all blank, then there isn't a subprovider associated with the station. This information can also be obtained directly by reading the SUBPVDR variable, which only contains the subprovider designation.
Note that the station location variable isn't available in the AWIPS database for METAR.
- The PCPUDAY (COOP) variable provides the accumulated precipitation for a 24 hour period that can be defined by each individual station. The UDSTART variable can be used to determine the start hour & minute of the "user-defined day". E.g., a UDSTART value of 1330 would mean the 24 hour accumulation period starts at 13:30 local time, a value of 200 would represent 02:00.
- The 1-minute ASOS Runway Visual Range (RVRID) is specified
in degrees. The location of the RVR runway relative to other
parallel runways (RVRLOC) is specified as follows:
Value Meaning ----- ------- 0 no runway parallel to RVR runway 1 left 2 center 3 right
The RVR distance type (RVRTYPE) variable has the following values:
Value Meaning ----- ------- 0 between highest and lowest reportable values 1 lowest reportable value 2 highest reportable value
- The 1-minute ASOS alert data bitmasks (ALERT1, ALERT2) provide
an optional means to alert users to an operational value. This feature
is optional, and may not be implemented on all stations. The tables
below indicate the meaning of bits that may be set in the two words
(LSB=1, MSB=16).
ALERT1: Bit Meaning --- ------- 1 Sky Condition, In 2 Ceiling, Up 3 Ceiling, Down 4 Visibility, Increase 5 Visibility, Decrease 6 Wind Direction/Preferred Runway Change 7 Wind Speed, Increase 8 Reserved 9 Hail, Begin 10 Hail, End 11 Ice Pellets, Begin 12 Ice Pellets, End 13 Freezing Rain, Begin 14 Freezing Rain, End 15 Freezing Drizzle, Begin 16 Freezing Drizzle, End ALERT2: Bit Meaning --- ------- 1 Thunderstorm, Begin 2 Thunderstorm, End 3 Thunderstorm, Increase 4 Tornado Observed 5 Funnel Cloud Observed 6 Water Spout Observed 7 Reserved 8 Local Threshold Exceeded 9 Snow, Begin 10 Snow, End 11 Rain, Begin 12 Rain, End 13 Non-specific Precip, Begin 14 Non-specific Precip, End 15 Fog, Begin 16 Fog, End
- The COOP stations have the option to add up to two variables that are specific to the individual station.
- Commissioned status (COOP):
Value Meaning ----- ------- 0 commissioned 1 not yet commissioned
- Station quality indicator (COOP):
Value Meaning ----- ------- [TBD]
- All times reported in the MADIS API are in Universal Coordinated Time, with the
format of "YYJJJHHMM", where:
YY = 2-digit year (good from 1980 - 2179)
JJJ = Julian date of the year (1-366)
HH = Hour (0-23)
MM = Minute (0-59)If the max/min temperature time is missing, the 9-character field will be set to all blanks, e.g., " ". Users of the MADIS API sfcdump program will get the time output in their chosen format, either YYJJJHHMM or YYYYMMDD_HHMM.
- Some (but not all) mesonets, and the COOP dataset, contain data from a number of smaller networks. In these cases, the "subprovider" for each station is the name of the smaller network. If this variable is all blank, then there isn't a subprovider associated with the station.
- The total precipitation variable (COOP, MESONET, 1-minute ASOS) is an accumulation over a period of unknown duration. Stations that report this value will also report the PCP1H and PCP24H observations, except for 1-minute ASOS, which will report PCP1H but not PCP24H. The High Frequency total precipitation values are only available for AWOS stations. The PCPTOTL value is made available for those interested in calculating the accumulation over a period of other than 1 or 24 hours.
- The COOP door open/closed indicator is used to show when the instrument
enclosure has been opened for maintenance.
Value Meaning ----- ------- 0 closed 1 open
- The COOP rim heating on/off indicator is used to indicate when rim heating
is on for the precipitation gauge.
Value Meaning ----- ------- 0 off 1 on
- The stage 3 results from the 5m variables are also assigned to the 15m variables for UrbaNet.
- The 1-minute ASOS dataset contains the following "remarks" variables:
Automated remarks status (ARMKST) is a bitmask with set bits indicating the detection of conditions triggering automated remarks (LSB=1, MSB=16):
Bit Meaning --- ------- 1 variable visibility 2 variable wind direction 3 variable ceiling 4 reserved 5 visibility at second location 6 ceiling height at second location Automated remarks (AUTORMK) encoding ------------------------------------ Variable Visibility The automated remark pertaining to variable visibility is expressed as: VSBY aaa(a)Vbbb(b), where aaa(a) and bbb(b) are 3- or 4-character, variable-length fields with leading "0" characters as necessary to ensure a 3 character minimum, and these represent range limits provided in hundredths of statute miles. For example: VSBY 075V250 indicates a variation in visibility between 0.75 and 2.5 miles. (ASOS/AOS Only) A multiple sensor visibility remark is inserted in this field in the exact format by which it is prepared for insertion as a multiple sensor visibility REMARK in METAR format. See FMH-1 for details of the formatting. Variable Wind The automated remark for variable wind direction is encoded as follows when the current average wind speed exceeds 6 knots: WND ccVdd, where cc and dd are 2-character, fixed-length fields with a leading "0" character as necessary, and indicates range limits provided in tens of degrees. For example: WND 06V13 denotes a variation in the true direction between 60 and 130 degrees. The automated remark for variable wind direction is encoded as follows when the current average wind speed is equal to or less than 6 knots and five-second wind samples have varied over a range of 60 degrees or more over the past two minutes: VRBkkKT, where kk is a 2-character, fixed-length field with a leading "0" character, and "VRB" and "KT" shall be literals. For example: VRB03KT Variable Ceiling (ASOS/AOS Only) The automated remark for variable ceiling condition may indicate one (for an airport configured with a single cloud sensor) or one of two (for an airport configured with multiple cloud sensors) cloud conditions. The format for the single cloud sensor configuration is: CIG eeeVfff, and the format for the multiple cloud sensor configuration is: CIG eee gggggggg CIG eeeVfff CHINO gggggggg Upper case letters and blanks within individual remarks are fixed. Lower case eee,fff are 3-character, fixed-length fields with leading "0" character(s) as necessary, and respectively represent minimum and maximum ceiling heights, in hundreds of feet, above ground level (AGL). gggggggg is a 1- to 8-character, variable-length field representing one of the eight cardinal directions: "N", "NE", "E", "SE", "S", "SW", "W", "NW" and/or additional descriptors such as runway designators, etc. For example: CIG 008V020 indicates that a variable ceiling base height was detected between 800 and 2000 feet. Visibility At Second Location (ASOS/AOS Only) The automated remark pertaining to visibility at a second location, generated only when this value is less than that registered at the primary location, is encoded as: VIS aaaaa gggggggg, where aaaaa is a variable length field of up to 5 characters representing the visibility in fractional format, with a single space character separating the integer and fractional parts, and gggggggg is a 1- to 8-character, variable-length field representing one of the eight cardinal directions: "N", "NE", "E", "SE", "S", "SW", "W", "NW" and/or additional descriptors such as runway designators, etc. For example: VIS 1 3/4 RWY22 indicates a visibility of one and three quarters statute miles registered at the Runway 22 location. Ceiling Height At Second Location (ASOS/AOS Only) The automated remark pertaining to ceiling height at a second location, generated only when this value is less than that registered at the primary location, is encoded as: CIG hhh gggggggg, where hhh is a fixed length field of 3 characters representing the measured ceiling height in hundreds of feet, and gggggggg is a 1- to 8-character, variable-length field representing one of the eight cardinal directions: "N", "NE", "E", "SE", "S", "SW", "W", "NW" and/or additional descriptors such as runway designators, etc. For example: CIG 003 RWY22 indicates a ceiling height of three hundred feet registered at the Runway 22 location. Operator remarks (OPERRMK) are free-formatted text.
- The 1-minute ASOS sensor status variables (DDSS, FFSS, FRZRSS,
PCPASS, PCPTSS, PSS, RVRSS, SCLBSS, TDSS, TSS, VISSS) indicate the
operational status of each sensor, as shown in the following table:
Value Meaning ----- ------- 0 Sensor operating/data available 1 Reserved 2 Sensor not installed 3 Sensor out of service 4 Reserved 5 Sensors output in conflict 6 Invalidated: Auto range check 7 Invalidated: Auto rate of change 8 Invalidated: Auto insufficent count 9 Invalidated: By operator 10 Data source offsite: Link failure 11 Reserved 12 Dewpoint sensor invalidated * 13 Reserved 14 Reserved 15 Reserved 16 Operator manual data entry * Value 12 is only used for the dewpoint sensor (TDSS).
- The 1-minute ASOS operating status (OPSTAT) is a bitmask indicating
the status of the station as a whole, the meaning of the possible set bits
(LSB=1, MSB=16) is shown below.
Bit Meaning --- ------- 1 Operator on duty 2 Test Mode 3 Manual Mode 4 Part or all data are suspect
- The 1-minute ASOS dataset parameter activation status (PARACT)
pertains to obstructions to visibility and precipitation types. This is
a bitmask, with set bits indicating that the associated parameters are
active, i.e., being monitored (e.g. rain or snow), or determined by
algorithm (e.g., haze, smoke). (LSB=1, MSB=16)
Bit Meaning --- ------- 1 Mist monitoring active 2 Fog monitoring active 3 Ground fog monitoring active 4 Ice fog monitoring active 5 Haze monitoring active 6 Smoke monitoring active 7 Dust, volcanic ash monitoring active 8 Blowing snow, sand monitoring active 9 Rain monitoring active 10 Snow grains monitoring active 11 Freezing rain monitoring active 12 Small hail and/or ice pellets monitoring active 13 Ice pellets monitoring active 14 Snow monitoring active 15 Ice crystals monitoring active 16 Hail monitoring active
- The road variable mobile head lights (HEDLIT) indicates whether the
headlights are on or not.
Value Meaning ----- ------- 0 Not on 1 On
- The road variable surface black ice signal (RDBIS) indicates if black
ice is detected.
Value Meaning ----- ------- 0 Reserved 1 Other 2 No ice 3 Black Ice 4 Detector error
- The road variable visibility situation (VISSIT) describes visibility of travel environment.
Value Meaning ----- ------- 0 Reserved 1 Other visibility anomaly 2 Unknown 3 Clear 4 Fog - not patchy 5 Patchy fog 6 Blowing snow 7 Smoke 8 Sea spray 9 Vehicle spray 10 Blowing dust or sand 11 Sun glare 12 Swarms of insects
- The road variable mobile wipers (WIPER) indicates whether the wipers are on or not.
Value Meaning ----- ------- 0 Not on 1 On
- The road variable precipitation Yes No (PCPYN) indicates if precipitation detected.
Value Meaning ----- ------- 0 Reserved 1 Precip 2 No Precip 3 Error
*The AWIPS database only has QC available for the MESONET dataset.
- The road variable visibility situation (VISSIT) describes visibility of travel environment.
Notes - MADIS Radiometer Variables
- The radiometer dataset includes meteorological "profiles" from microwave
radiometers. The station type variable is used to specify the type of
radiometer that's in use, with these code values:
Value Meaning ----- ------- 0 Unspecified 1 Radiometrics WVR-1100 2 Radiometrics WVP-1500 3 Radiometrics TP-2500 4 Radiometrics TP/WVP-3000 5 Radiometrics TP/WVP-3001 6 Radiometrics TP/WVP-3002 7 Radiometrics TP/WVP-3005 8 Radiometrics TP/WVP-3006
The number of levels (up to 100) and the heights of those levels may vary by the station type. Station types 1 through 4 all report 47 levels, from 0 to 1 km in 100 m steps, then from 1 km to 10 km in 250 m steps.
- Air temperature is the temperature variable stored in the database. The user can optionally select virtual temperature, which will then be calculated by the MADIS API. The QC results from air temperature will apply in either case. If virtual temperature cannot be calculated (missing or bad relative humidity), and the air temperature passed all QC checks, the air temperature will be returned instead, and a QC data descriptor value of "T" will be assigned. Also note that pressure is needed for the virtual temperature conversion; this is done by using the U.S. Standard Atmosphere calculation to calculate pressure from height.
- Relative humidity and absolute humidity are the moisture variables reported and stored in the database. The user can optionally select dewpoint temperature, dewpoint depression, specific humidity, or water vapor mixing ratio. These values will then be calculated by the MADIS API. The QC results from relative humidity will apply to any of the calculated variables. As with the virtual temperature conversion mentioned above, the specific humidity conversion uses pressure calculated from the heights. Also note that absolute humidity is sometimes referred to as "vapor density", these are in fact the same quantity.
- The true vertical coordinate is height. If the user selects pressure as the vertical coordinate, the heights are converted to pressure using the U.S. Standard Atmosphere calculation.
Last updated 31 October 2022