# tzdb data for South America and environs

# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.

# This file is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
# tz@iana.org for general use in the future).  For more, please see
# the file CONTRIBUTING in the tz distribution.

# From Paul Eggert (2016-12-05):
#
# Unless otherwise specified, the source for data through 1990 is:
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
# San Diego: ACS Publications, Inc. (2003).
# Unfortunately this book contains many errors and cites no sources.
#
# Many years ago Gwillim Law wrote that a good source
# for time zone data was the International Air Transport
# Association's Standard Schedules Information Manual (IATA SSIM),
# published semiannually.  Law sent in several helpful summaries
# of the IATA's data after 1990.  Except where otherwise noted,
# IATA SSIM is the source for entries after 1990.
#
# For data circa 1899, a common source is:
# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
# https://www.jstor.org/stable/1774359
#
# These tables use numeric abbreviations like -03 and -0330 for
# integer hour and minute UT offsets.  Although earlier editions used
# alphabetic time zone abbreviations, these abbreviations were
# invented and did not reflect common practice.

###############################################################################

###############################################################################

# Argentina

# From Bob Devine (1988-01-28):
# Argentina: first Sunday in October to first Sunday in April since 1976.
# Double Summer time from 1969 to 1974.  Switches at midnight.

# From U. S. Naval Observatory (1988-01-19):
# ARGENTINA           3 H BEHIND   UTC

# From Hernan G. Otero (1995-06-26):
# I am sending modifications to the Argentine time zone table...
# AR was chosen because they are the ISO letters that represent Argentina.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Arg	1930	only	-	Dec	 1	0:00	1:00	-
Rule	Arg	1931	only	-	Apr	 1	0:00	0	-
Rule	Arg	1931	only	-	Oct	15	0:00	1:00	-
Rule	Arg	1932	1940	-	Mar	 1	0:00	0	-
Rule	Arg	1932	1939	-	Nov	 1	0:00	1:00	-
Rule	Arg	1940	only	-	Jul	 1	0:00	1:00	-
Rule	Arg	1941	only	-	Jun	15	0:00	0	-
Rule	Arg	1941	only	-	Oct	15	0:00	1:00	-
Rule	Arg	1943	only	-	Aug	 1	0:00	0	-
Rule	Arg	1943	only	-	Oct	15	0:00	1:00	-
Rule	Arg	1946	only	-	Mar	 1	0:00	0	-
Rule	Arg	1946	only	-	Oct	 1	0:00	1:00	-
Rule	Arg	1963	only	-	Oct	 1	0:00	0	-
Rule	Arg	1963	only	-	Dec	15	0:00	1:00	-
Rule	Arg	1964	1966	-	Mar	 1	0:00	0	-
Rule	Arg	1964	1966	-	Oct	15	0:00	1:00	-
Rule	Arg	1967	only	-	Apr	 2	0:00	0	-
Rule	Arg	1967	1968	-	Oct	Sun>=1	0:00	1:00	-
Rule	Arg	1968	1969	-	Apr	Sun>=1	0:00	0	-
Rule	Arg	1974	only	-	Jan	23	0:00	1:00	-
Rule	Arg	1974	only	-	May	 1	0:00	0	-
Rule	Arg	1988	only	-	Dec	 1	0:00	1:00	-
#
# From Hernan G. Otero (1995-06-26):
# These corrections were contributed by InterSoft Argentina S.A.,
# obtaining the data from the:
# Talleres de Hidrografía Naval Argentina
# (Argentine Naval Hydrography Institute)
Rule	Arg	1989	1993	-	Mar	Sun>=1	0:00	0	-
Rule	Arg	1989	1992	-	Oct	Sun>=15	0:00	1:00	-
#
# From Hernan G. Otero (1995-06-26):
# From this moment on, the law that mandated the daylight saving
# time corrections was derogated and no more modifications
# to the time zones (for daylight saving) are now made.
#
# From Rives McDow (2000-01-10):
# On October 3, 1999, 0:00 local, Argentina implemented daylight savings time,
# which did not result in the switch of a time zone, as they stayed 9 hours
# from the International Date Line.
Rule	Arg	1999	only	-	Oct	Sun>=1	0:00	1:00	-
# From Paul Eggert (2007-12-28):
# DST was set to expire on March 5, not March 3, but since it was converted
# to standard time on March 3 it's more convenient for us to pretend that
# it ended on March 3.
Rule	Arg	2000	only	-	Mar	3	0:00	0	-
#
# From Peter Gradelski via Steffen Thorsen (2000-03-01):
# We just checked with our São Paulo office and they say the government of
# Argentina decided not to become one of the countries that go on or off DST.
# So Buenos Aires should be -3 hours from GMT at all times.
#
# From Fabián L. Arce Jofré (2000-04-04):
# The law that claimed DST for Argentina was derogated by President Fernando
# de la Rúa on March 2, 2000, because it would make people spend more energy
# in the winter time, rather than less.  The change took effect on March 3.
#
# From Mariano Absatz (2001-06-06):
# one of the major newspapers here in Argentina said that the 1999
# Timezone Law (which never was effectively applied) will (would?) be
# in effect.... The article is at
# http://ar.clarin.com/diario/2001-06-06/e-01701.htm
# ... The Law itself is "Ley No. 25155", sanctioned on 1999-08-25, enacted
# 1999-09-17, and published 1999-09-21.  The official publication is at:
# http://www.boletin.jus.gov.ar/BON/Primera/1999/09-Septiembre/21/PDF/BO21-09-99LEG.PDF
# Regretfully, you have to subscribe (and pay) for the on-line version....
#
# (2001-06-12):
# the timezone for Argentina will not change next Sunday.
# Apparently it will do so on Sunday 24th....
# http://ar.clarin.com/diario/2001-06-12/s-03501.htm
#
# (2001-06-25):
# Last Friday (yes, the last working day before the date of the change), the
# Senate annulled the 1999 law that introduced the changes later postponed.
# http://www.clarin.com.ar/diario/2001-06-22/s-03601.htm
# It remains the vote of the Deputies..., but it will be the same....
# This kind of things had always been done this way in Argentina.
# We are still -03:00 all year round in all of the country.
#
# From Steffen Thorsen (2007-12-21):
# A user (Leonardo Chaim) reported that Argentina will adopt DST....
# all of the country (all Zone-entries) are affected.  News reports like
# http://www.lanacion.com.ar/opinion/nota.asp?nota_id=973037 indicate
# that Argentina will use DST next year as well, from October to
# March, although exact rules are not given.
#
# From Jesper Nørgaard Welen (2007-12-26)
# The last hurdle of Argentina DST is over, the proposal was approved in
# the lower chamber too (Diputados) with a vote 192 for and 2 against.
# By the way thanks to Mariano Absatz and Daniel Mario Vega for the link to
# the original scanned proposal, where the dates and the zero hours are
# clear and unambiguous...This is the article about final approval:
# http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996
#
# From Paul Eggert (2007-12-22):
# For dates after mid-2008, the following rules are my guesses and
# are quite possibly wrong, but are more likely than no DST at all.

# From Alexander Krivenyshev (2008-09-05):
# As per message from Carlos Alberto Fonseca Arauz (Nicaragua),
# Argentina will start DST on Sunday October 19, 2008.
#
# http://www.worldtimezone.com/dst_news/dst_news_argentina03.html
# http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)

# From Juan Manuel Docile in https://bugs.gentoo.org/240339 (2008-10-07)
# via Rodrigo Severo:
# Argentinian law No. 25.155 is no longer valid.
# http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm
# The new one is law No. 26.350
# http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm
# So there is no summer time in Argentina for now.

# From Mariano Absatz (2008-10-20):
# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST
# in Argentina from 2008-10-19 until 2009-03-15.
# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01
#

# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer
# 2008/2009: Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La
# Pampa, Neuquén, Rio Negro, Chubut, Santa Cruz and Tierra del Fuego
# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01
#
# Press release 235 dated Saturday October 18th, from the Government of the
# Province of Jujuy saying it will not apply DST either (even when it was not
# included in Decree 1705/2008).
# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc

# From fullinet (2009-10-18):
# As announced in
# http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356
# (an official .gob.ar) under title: "Sin Cambio de Hora"
# (English: "No hour change").
#
# "Por el momento, el Gobierno Nacional resolvió no modificar la hora
# oficial, decisión que estaba en estudio para su implementación el
# domingo 18 de octubre. Desde el Ministerio de Planificación se anunció
# que la Argentina hoy, en estas condiciones meteorológicas, no necesita
# la modificación del huso horario, ya que 2009 nos encuentra con
# crecimiento en la producción y distribución energética."

Rule	Arg	2007	only	-	Dec	30	0:00	1:00	-
Rule	Arg	2008	2009	-	Mar	Sun>=15	0:00	0	-
Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	-

# From Mariano Absatz (2004-05-21):
# Today it was officially published that the Province of Mendoza is changing
# its timezone this winter... starting tomorrow night....
# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040521-27158-normas.pdf
# From Paul Eggert (2004-05-24):
# It's Law No. 7,210.  This change is due to a public power emergency, so for
# now we'll assume it's for this year only.
#
# From Paul Eggert (2018-01-31):
# Hora de verano para la República Argentina
# http://buenasiembra.com.ar/esoterismo/astrologia/hora-de-verano-de-la-republica-argentina-27.html
# says that standard time in Argentina from 1894-10-31
# to 1920-05-01 was -4:16:48.25.  Go with this more precise value
# over Shanks & Pottenger.  It is upward compatible with Milne, who
# says Córdoba time was -4:16:48.2.

#
# From Mariano Absatz (2004-06-05):
# These media articles from a major newspaper mostly cover the current state:
# http://www.lanacion.com.ar/04/05/27/de_604825.asp
# http://www.lanacion.com.ar/04/05/28/de_605203.asp
#
# The following eight (8) provinces pulled clocks back to UTC-04:00 at
# midnight Monday May 31st. (that is, the night between 05/31 and 06/01).
# Apparently, all nine provinces would go back to UTC-03:00 at the same
# time in October 17th.
#
# Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,
# Tierra del Fuego, Tucumán.
#
# From Mariano Absatz (2004-06-14):
# ... this weekend, the Province of Tucumán decided it'd go back to UTC-03:00
# yesterday midnight (that is, at 24:00 Saturday 12th), since the people's
# annoyance with the change is much higher than the power savings obtained....
#
# From Gwillim Law (2004-06-14):
# http://www.lanacion.com.ar/04/06/10/de_609078.asp ...
#     "The time change in Tierra del Fuego was a conflicted decision from
#   the start.  The government had decreed that the measure would take
#   effect on June 1, but a normative error forced the new time to begin
#   three days earlier, from a Saturday to a Sunday....
# Our understanding was that the change was originally scheduled to take place
# on June 1 at 00:00 in Chubut, Santa Cruz, Tierra del Fuego (and some other
# provinces).  Sunday was May 30, only two days earlier.  So the article
# contains a contradiction.  I would give more credence to the Saturday/Sunday
# date than the "three days earlier" phrase, and conclude that Tierra del
# Fuego set its clocks back at 2004-05-30 00:00.
#
# From Steffen Thorsen (2004-10-05):
# The previous law 7210 which changed the province of Mendoza's time zone
# back in May have been modified slightly in a new law 7277, which set the
# new end date to 2004-09-26 (original date was 2004-10-17).
# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf
#
# From Mariano Absatz (2004-10-05):
# San Juan changed from UTC-03:00 to UTC-04:00 at midnight between
# Sunday, May 30th and Monday, May 31st.  It changed back to UTC-03:00
# at midnight between Saturday, July 24th and Sunday, July 25th....
# http://www.sanjuan.gov.ar/prensa/archivo/000329.html
# http://www.sanjuan.gov.ar/prensa/archivo/000426.html
# http://www.sanjuan.gov.ar/prensa/archivo/000441.html

# From Alex Krivenyshev (2008-01-17):
# Here are articles that Argentina Province San Luis is planning to end DST
# as earlier as upcoming Monday January 21, 2008 or February 2008:
#
# Provincia argentina retrasa reloj y marca diferencia con resto del país
# (Argentine Province delayed clock and mark difference with the rest of the
# country)
# http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel
#
# Es inminente que en San Luis atrasen una hora los relojes
# (It is imminent in San Luis clocks one hour delay)
# https://www.lagaceta.com.ar/nota/253414/Economia/Es-inminente-que-en-San-Luis-atrasen-una-hora-los-relojes.html
# http://www.worldtimezone.com/dst_news/dst_news_argentina02.html

# From Jesper Nørgaard Welen (2008-01-18):
# The page of the San Luis provincial government
# http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812
# confirms what Alex Krivenyshev has earlier sent to the tz
# emailing list about that San Luis plans to return to standard
# time much earlier than the rest of the country. It also
# confirms that upon request the provinces San Juan and Mendoza
# refused to follow San Luis in this change.
#
# The change is supposed to take place Monday the 21st at 0:00
# hours. As far as I understand it if this goes ahead, we need
# a new timezone for San Luis (although there are also documented
# independent changes in the southamerica file of San Luis in
# 1990 and 1991 which has not been confirmed).

# From Jesper Nørgaard Welen (2008-01-25):
# Unfortunately the below page has become defunct, about the San Luis
# time change. Perhaps because it now is part of a group of pages "Most
# important pages of 2008."
#
# You can use
# http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834
# instead it seems. Or use "Buscador" from the main page of the San Luis
# government, and fill in "huso" and click OK, and you will get 3 pages
# from which the first one is identical to the above.

# From Mariano Absatz (2008-01-28):
# I can confirm that the Province of San Luis (and so far only that
# province) decided to go back to UTC-3 effective midnight Jan 20th 2008
# (that is, Monday 21st at 0:00 is the time the clocks were delayed back
# 1 hour), and they intend to keep UTC-3 as their timezone all year round
# (that is, unless they change their mind any minute now).
#
# So we'll have to add yet another city to 'southamerica' (I think San
# Luis city is the mos populated city in the Province, so it'd be
# America/Argentina/San_Luis... of course I can't remember if San Luis's
# history of particular changes goes along with Mendoza or San Juan :-(
# (I only remember not being able to collect hard facts about San Luis
# back in 2004, when these provinces changed to UTC-4 for a few days, I
# mailed them personally and never got an answer).

# From Paul Eggert (2014-08-12):
# Unless otherwise specified, data entries are from Shanks & Pottenger through
# 1992, from the IATA otherwise.  As noted below, Shanks & Pottenger say that
# America/Cordoba split into 6 subregions during 1991/1992, one of which
# was America/San_Luis, but we haven't verified this yet so for now we'll
# keep America/Cordoba a single region rather than splitting it into the
# other 5 subregions.

# From Mariano Absatz (2009-03-13):
# Yesterday (with our usual 2-day notice) the Province of San Luis
# decided that next Sunday instead of "staying" @utc-03:00 they will go
# to utc-04:00 until the second Saturday in October...
#
# The press release is at
# http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102
# (I couldn't find the decree, but www.sanluis.gov.ar
# is the official page for the Province Government.)
#
# There's also a note in only one of the major national papers ...
# http://www.lanacion.com.ar/nota.asp?nota_id=1107912
#
# The press release says [quick and dirty translation]:
# ... announced that next Sunday, at 00:00, Puntanos (the San Luis
# inhabitants) will have to turn back one hour their clocks
#
# Since then, San Luis will establish its own Province timezone. Thus,
# during 2009, this timezone change will run from 00:00 the third Sunday
# in March until 24:00 of the second Saturday in October.

# From Mariano Absatz (2009-10-16):
# ...the Province of San Luis is a case in itself.
#
# The Law at
# http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276
# is ambiguous because establishes a calendar from the 2nd Sunday in
# October at 0:00 thru the 2nd Saturday in March at 24:00 and the
# complement of that starting on the 2nd Sunday of March at 0:00 and
# ending on the 2nd Saturday of March at 24:00.
#
# This clearly breaks every time the 1st of March or October is a Sunday.
#
# IMHO, the "spirit of the Law" is to make the changes at 0:00 on the 2nd
# Sunday of October and March.
#
# The problem is that the changes in the rest of the Provinces that did
# change in 2007/2008, were made according to the Federal Law and Decrees
# that did so on the 3rd Sunday of October and March.
#
# In fact, San Luis actually switched from UTC-4 to UTC-3 last Sunday
# (October 11th) at 0:00.
#
# So I guess a new set of rules, besides "Arg", must be made and the last
# America/Argentina/San_Luis entries should change to use these...
# ...

# From Alexander Krivenyshev (2010-04-09):
# According to news reports from El Diario de la República Province San
# Luis, Argentina (standard time UTC-04) will keep Daylight Saving Time
# after April 11, 2010 - will continue to have same time as rest of
# Argentina (UTC-3) (no DST).
#
# Confirmaron la prórroga del huso horario de verano (Spanish)
# http://www.eldiariodelarepublica.com/index.php?option=com_content&task=view&id=29383&Itemid=9
# or (some English translation):
# http://www.worldtimezone.com/dst_news/dst_news_argentina08.html

# From Mariano Absatz (2010-04-12):
# yes...I can confirm this...and given that San Luis keeps calling
# UTC-03:00 "summer time", we should't just let San Luis go back to "Arg"
# rules...San Luis is still using "Western ARgentina Time" and it got
# stuck on Summer daylight savings time even though the summer is over.

# From Paul Eggert (2018-01-23):
# Perhaps San Luis operates on the legal fiction that it is at -04
# with perpetual daylight saving time, but ordinary usage typically seems to
# just say it's at -03; see, for example,
# https://es.wikipedia.org/wiki/Hora_oficial_argentina
# We've documented similar situations as being plain changes to
# standard time, so let's do that here too.  This does not change UTC
# offsets, only tm_isdst and the time zone abbreviations.  One minor
# plus is that this silences a zic complaint that there's no POSIX TZ
# setting for timestamps past 2038.

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
#
# Buenos Aires (BA), Capital Federal (CF),
Zone America/Argentina/Buenos_Aires -3:53:48 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	Arg	%z
#
# Córdoba (CB), Santa Fe (SF), Entre Ríos (ER), Corrientes (CN), Misiones (MN),
# Chaco (CC), Formosa (FM), Santiago del Estero (SE)
#
# Shanks & Pottenger also make the following claims, which we haven't verified:
# - Formosa switched to -3:00 on 1991-01-07.
# - Misiones switched to -3:00 on 1990-12-29.
# - Chaco switched to -3:00 on 1991-01-04.
# - Santiago del Estero switched to -4:00 on 1991-04-01,
#   then to -3:00 on 1991-04-26.
#
		#STDOFF	       -4:16:48.25
Zone America/Argentina/Cordoba -4:16:48 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1991 Mar  3
			-4:00	-	%z	1991 Oct 20
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	Arg	%z
#
# Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN)
Zone America/Argentina/Salta -4:21:40 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1991 Mar  3
			-4:00	-	%z	1991 Oct 20
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	Arg	%z	2008 Oct 18
			-3:00	-	%z
#
# Tucumán (TM)
Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1991 Mar  3
			-4:00	-	%z	1991 Oct 20
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	-	%z	2004 Jun  1
			-4:00	-	%z	2004 Jun 13
			-3:00	Arg	%z
#
# La Rioja (LR)
Zone America/Argentina/La_Rioja -4:27:24 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1991 Mar  1
			-4:00	-	%z	1991 May  7
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	-	%z	2004 Jun  1
			-4:00	-	%z	2004 Jun 20
			-3:00	Arg	%z	2008 Oct 18
			-3:00	-	%z
#
# San Juan (SJ)
Zone America/Argentina/San_Juan -4:34:04 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1991 Mar  1
			-4:00	-	%z	1991 May  7
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	-	%z	2004 May 31
			-4:00	-	%z	2004 Jul 25
			-3:00	Arg	%z	2008 Oct 18
			-3:00	-	%z
#
# Jujuy (JY)
Zone America/Argentina/Jujuy -4:21:12 -	LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1990 Mar  4
			-4:00	-	%z	1990 Oct 28
			-4:00	1:00	%z	1991 Mar 17
			-4:00	-	%z	1991 Oct  6
			-3:00	1:00	%z	1992
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	Arg	%z	2008 Oct 18
			-3:00	-	%z
#
# Catamarca (CT), Chubut (CH)
Zone America/Argentina/Catamarca -4:23:08 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1991 Mar  3
			-4:00	-	%z	1991 Oct 20
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	-	%z	2004 Jun  1
			-4:00	-	%z	2004 Jun 20
			-3:00	Arg	%z	2008 Oct 18
			-3:00	-	%z
#
# Mendoza (MZ)
Zone America/Argentina/Mendoza -4:35:16 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1990 Mar  4
			-4:00	-	%z	1990 Oct 15
			-4:00	1:00	%z	1991 Mar  1
			-4:00	-	%z	1991 Oct 15
			-4:00	1:00	%z	1992 Mar  1
			-4:00	-	%z	1992 Oct 18
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	-	%z	2004 May 23
			-4:00	-	%z	2004 Sep 26
			-3:00	Arg	%z	2008 Oct 18
			-3:00	-	%z
#
# San Luis (SL)

Rule	SanLuis	2008	2009	-	Mar	Sun>=8	0:00	0	-
Rule	SanLuis	2007	2008	-	Oct	Sun>=8	0:00	1:00	-

Zone America/Argentina/San_Luis -4:25:24 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1990
			-3:00	1:00	%z	1990 Mar 14
			-4:00	-	%z	1990 Oct 15
			-4:00	1:00	%z	1991 Mar  1
			-4:00	-	%z	1991 Jun  1
			-3:00	-	%z	1999 Oct  3
			-4:00	1:00	%z	2000 Mar  3
			-3:00	-	%z	2004 May 31
			-4:00	-	%z	2004 Jul 25
			-3:00	Arg	%z	2008 Jan 21
			-4:00	SanLuis	%z	2009 Oct 11
			-3:00	-	%z
#
# Santa Cruz (SC)
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	-	%z	2004 Jun  1
			-4:00	-	%z	2004 Jun 20
			-3:00	Arg	%z	2008 Oct 18
			-3:00	-	%z
#
# Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF)
Zone America/Argentina/Ushuaia -4:33:12 - LMT	1894 Oct 31
		#STDOFF	-4:16:48.25
			-4:16:48 -	CMT	1920 May
			-4:00	-	%z	1930 Dec
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1999 Oct  3
			-4:00	Arg	%z	2000 Mar  3
			-3:00	-	%z	2004 May 30
			-4:00	-	%z	2004 Jun 20
			-3:00	Arg	%z	2008 Oct 18
			-3:00	-	%z

# Bolivia
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	America/La_Paz	-4:32:36 -	LMT	1890
			-4:32:36 -	CMT	1931 Oct 15 # Calamarca MT
			-4:32:36 1:00	BST	1932 Mar 21 # Bolivia ST
			-4:00	-	%z

# Brazil

# From Paul Eggert (1993-11-18):
# The mayor of Rio recently attempted to change the time zone rules
# just in his city, in order to leave more summer time for the tourist trade.
# The rule change lasted only part of the day;
# the federal government refused to follow the city's rules, and business
# was in a chaos, so the mayor backed down that afternoon.

# From IATA SSIM (1996-02):
# _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
# Santa Catarina (SC), Paraná (PR), São Paulo (SP), Rio de Janeiro (RJ),
# Espírito Santo (ES), Minas Gerais (MG), Bahia (BA), Goiás (GO),
# Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
# [The last three states are new to this issue of the IATA SSIM.]

# From Gwillim Law (1996-10-07):
# Geography, history (Tocantins was part of Goiás until 1989), and other
# sources of time zone information lead me to believe that AL, SE, and TO were
# always in BR1, and so the only change was whether or not they observed DST....
# The earliest issue of the SSIM I have is 2/91.  Each issue from then until
# 9/95 says that DST is observed only in the ten states I quoted from 9/95,
# along with Mato Grosso (MT) and Mato Grosso do Sul (MS), which are in BR2
# (UTC-4)....  The other two time zones given for Brazil are BR3, which is
# UTC-5, no DST, and applies only in the state of Acre (AC); and BR4, which is
# UTC-2, and applies to Fernando de Noronha (formerly FN, but I believe it's
# become part of the state of Pernambuco).  The boundary between BR1 and BR2
# has never been clearly stated.  They've simply been called East and West.
# However, some conclusions can be drawn from another IATA manual: the Airline
# Coding Directory, which lists close to 400 airports in Brazil.  For each
# airport it gives a time zone which is coded to the SSIM.  From that
# information, I'm led to conclude that the states of Amapá (AP), Ceará (CE),
# Maranhão (MA), Paraíba (PR), Pernambuco (PE), Piauí (PI), and Rio Grande do
# Norte (RN), and the eastern part of Pará (PA) are all in BR1 without DST.

# From Marcos Tadeu (1998-09-27):
# Brazilian official page <http://pcdsh01.on.br/verao1.html>

# From Jesper Nørgaard (2000-11-03):
# [For an official list of which regions in Brazil use which time zones, see:]
# http://pcdsh01.on.br/Fusbr.htm
# http://pcdsh01.on.br/Fusbrhv.htm

# From Celso Doria via David Madeo (2002-10-09):
# The reason for the delay this year has to do with elections in Brazil.
#
# Unlike in the United States, elections in Brazil are 100% computerized and
# the results are known almost immediately.  Yesterday, it was the first
# round of the elections when 115 million Brazilians voted for President,
# Governor, Senators, Federal Deputies, and State Deputies.  Nobody is
# counting (or re-counting) votes anymore and we know there will be a second
# round for the Presidency and also for some Governors.  The 2nd round will
# take place on October 27th.
#
# The reason why the DST will only begin November 3rd is that the thousands
# of electoral machines used cannot have their time changed, and since the
# Constitution says the elections must begin at 8:00 AM and end at 5:00 PM,
# the Government decided to postpone DST, instead of changing the Constitution
# (maybe, for the next elections, it will be possible to change the clock)...

# From Rodrigo Severo (2004-10-04):
# It's just the biannual change made necessary by the much hyped, supposedly
# modern Brazilian ... voting machines which, apparently, can't deal
# with a time change between the first and the second rounds of the elections.

# From Steffen Thorsen (2007-09-20):
# Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:
# http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975

# From Paul Schulze (2008-06-24):
# ...by law number 11.662 of April 24, 2008 (published in the "Diario
# Oficial da União"...) in Brazil there are changes in the timezones,
# effective today (00:00am at June 24, 2008) as follows:
#
# a) The timezone UTC+5 is extinguished, with all the Acre state and the
# part of the Amazonas state that had this timezone now being put to the
# timezone UTC+4
# b) The whole Pará state now is put at timezone UTC+3, instead of just
# part of it, as was before.
#
# This change follows a proposal of senator Tiao Viana of Acre state, that
# proposed it due to concerns about open television channels displaying
# programs inappropriate to youths in the states that had the timezone
# UTC+5 too early in the night. In the occasion, some more corrections
# were proposed, trying to unify the timezones of any given state. This
# change modifies timezone rules defined in decree 2.784 of 18 June,
# 1913.

# From Rodrigo Severo (2008-06-24):
# Just correcting the URL:
# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008
#
# As a result of the above Decree I believe the America/Rio_Branco
# timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
# be created to represent the...west side of the Pará State. I
# suggest this new timezone be called Santarem as the most
# important/populated city in the affected area.
#
# This new timezone would be the same as the Rio_Branco timezone up to
# the 2008/06/24 change which would be to UTC-3 instead of UTC-4.

# From Alex Krivenyshev (2008-06-24):
# This is a quick reference page for New and Old Brazil Time Zones map.
# http://www.worldtimezone.com/brazil-time-new-old.php
#
# - 4 time zones replaced by 3 time zones - eliminating time zone UTC-05
# (state Acre and the part of the Amazonas will be UTC/GMT-04) - western
# part of Par state is moving to one timezone UTC-03 (from UTC-04).

# From Paul Eggert (2002-10-10):
# The official decrees referenced below are mostly taken from
# Decretos sobre o Horário de Verão no Brasil.
# http://pcdsh01.on.br/DecHV.html

# From Steffen Thorsen (2008-08-29):
# As announced by the government and many newspapers in Brazil late
# yesterday, Brazil will start DST on 2008-10-19 (need to change rule) and
# it will end on 2009-02-15 (current rule for Brazil is fine). Based on
# past years experience with the elections, there was a good chance that
# the start was postponed to November, but it did not happen this year.
#
# It has not yet been posted to http://pcdsh01.on.br/DecHV.html
#
# An official page about it:
# http://www.mme.gov.br/site/news/detail.do?newsId=16722
# Note that this link does not always work directly, but must be accessed
# by going to
# http://www.mme.gov.br/first
#
# One example link that works directly:
# http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54
# (Portuguese)
#
# We have a written a short article about it as well:
# https://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
#
# From Alexander Krivenyshev (2011-10-04):
# State Bahia will return to Daylight savings time this year after 8 years off.
# The announcement was made by Governor Jaques Wagner in an interview to a
# television station in Salvador.

# In Portuguese:
# http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html
# https://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html

# From Guilherme Bernardes Rodrigues (2011-10-07):
# There is news in the media, however there is still no decree about it.
# I just send a e-mail to Zulmira Brandao at http://pcdsh01.on.br/ the
# official agency about time in Brazil, and she confirmed that the old rule is
# still in force.

# From Guilherme Bernardes Rodrigues (2011-10-14)
# It's official, the President signed a decree that includes Bahia in summer
# time.
#	 [ and in a second message (same day): ]
# I found the decree.
#
# DECRETO No. 7.584, DE 13 DE OUTUBRO DE 2011
# Link :
# http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6

# From Kelley Cook (2012-10-16):
# The governor of state of Bahia in Brazil announced on Thursday that
# due to public pressure, he is reversing the DST policy they implemented
# last year and will not be going to Summer Time on October 21st....
# http://www.correio24horas.com.br/r/artigo/apos-pressoes-wagner-suspende-horario-de-verao-na-bahia

# From Rodrigo Severo (2012-10-16):
# Tocantins state will have DST.
# https://noticias.terra.com.br/brasil/noticias/0,,OI6232536-EI306.html

# From Steffen Thorsen (2013-09-20):
# Tocantins in Brazil is very likely not to observe DST from October....
# http://conexaoto.com.br/2013/09/18/ministerio-confirma-que-tocantins-esta-fora-do-horario-de-verao-em-2013-mas-falta-publicacao-de-decreto
# We will keep this article updated when this is confirmed:
# https://www.timeanddate.com/news/time/brazil-starts-dst-2013.html

# From Steffen Thorsen (2013-10-17):
# https://www.timeanddate.com/news/time/acre-amazonas-change-time-zone.html
# Senator Jorge Viana announced that Acre will change time zone on November 10.
# He did not specify the time of the change, nor if western parts of Amazonas
# will change as well.
#
# From Paul Eggert (2013-10-17):
# For now, assume western Amazonas will change as well.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
# Decree 20,466 <http://pcdsh01.on.br/HV20466.htm> (1931-10-01)
# Decree 21,896 <http://pcdsh01.on.br/HV21896.htm> (1932-01-10)
Rule	Brazil	1931	only	-	Oct	 3	11:00	1:00	-
Rule	Brazil	1932	1933	-	Apr	 1	 0:00	0	-
Rule	Brazil	1932	only	-	Oct	 3	 0:00	1:00	-
# Decree 23,195 <http://pcdsh01.on.br/HV23195.htm> (1933-10-10)
# revoked DST.
# Decree 27,496 <http://pcdsh01.on.br/HV27496.htm> (1949-11-24)
# Decree 27,998 <http://pcdsh01.on.br/HV27998.htm> (1950-04-13)
Rule	Brazil	1949	1952	-	Dec	 1	 0:00	1:00	-
Rule	Brazil	1950	only	-	Apr	16	 1:00	0	-
Rule	Brazil	1951	1952	-	Apr	 1	 0:00	0	-
# Decree 32,308 <http://pcdsh01.on.br/HV32308.htm> (1953-02-24)
Rule	Brazil	1953	only	-	Mar	 1	 0:00	0	-
# Decree 34,724 <http://pcdsh01.on.br/HV34724.htm> (1953-11-30)
# revoked DST.
# Decree 52,700 <http://pcdsh01.on.br/HV52700.htm> (1963-10-18)
# established DST from 1963-10-23 00:00 to 1964-02-29 00:00
# in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
# Decree 53,071 <http://pcdsh01.on.br/HV53071.htm> (1963-12-03)
# extended the above decree to all of the national territory on 12-09.
Rule	Brazil	1963	only	-	Dec	 9	 0:00	1:00	-
# Decree 53,604 <http://pcdsh01.on.br/HV53604.htm> (1964-02-25)
# extended summer time by one day to 1964-03-01 00:00 (start of school).
Rule	Brazil	1964	only	-	Mar	 1	 0:00	0	-
# Decree 55,639 <http://pcdsh01.on.br/HV55639.htm> (1965-01-27)
Rule	Brazil	1965	only	-	Jan	31	 0:00	1:00	-
Rule	Brazil	1965	only	-	Mar	31	 0:00	0	-
# Decree 57,303 <http://pcdsh01.on.br/HV57303.htm> (1965-11-22)
Rule	Brazil	1965	only	-	Dec	 1	 0:00	1:00	-
# Decree 57,843 <http://pcdsh01.on.br/HV57843.htm> (1966-02-18)
Rule	Brazil	1966	1968	-	Mar	 1	 0:00	0	-
Rule	Brazil	1966	1967	-	Nov	 1	 0:00	1:00	-
# Decree 63,429 <http://pcdsh01.on.br/HV63429.htm> (1968-10-15)
# revoked DST.
# Decree 91,698 <http://pcdsh01.on.br/HV91698.htm> (1985-09-27)
Rule	Brazil	1985	only	-	Nov	 2	 0:00	1:00	-
# Decree 92,310 (1986-01-21)
# Decree 92,463 (1986-03-13)
Rule	Brazil	1986	only	-	Mar	15	 0:00	0	-
# Decree 93,316 (1986-10-01)
Rule	Brazil	1986	only	-	Oct	25	 0:00	1:00	-
Rule	Brazil	1987	only	-	Feb	14	 0:00	0	-
# Decree 94,922 <http://pcdsh01.on.br/HV94922.htm> (1987-09-22)
Rule	Brazil	1987	only	-	Oct	25	 0:00	1:00	-
Rule	Brazil	1988	only	-	Feb	 7	 0:00	0	-
# Decree 96,676 <http://pcdsh01.on.br/HV96676.htm> (1988-09-12)
# except for the states of AC, AM, PA, RR, RO, and AP (then a territory)
Rule	Brazil	1988	only	-	Oct	16	 0:00	1:00	-
Rule	Brazil	1989	only	-	Jan	29	 0:00	0	-
# Decree 98,077 <http://pcdsh01.on.br/HV98077.htm> (1989-08-21)
# with the same exceptions
Rule	Brazil	1989	only	-	Oct	15	 0:00	1:00	-
Rule	Brazil	1990	only	-	Feb	11	 0:00	0	-
# Decree 99,530 <http://pcdsh01.on.br/HV99530.htm> (1990-09-17)
# adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.
# Decree 99,629 (1990-10-19) adds BA, MT.
Rule	Brazil	1990	only	-	Oct	21	 0:00	1:00	-
Rule	Brazil	1991	only	-	Feb	17	 0:00	0	-
# Unnumbered decree <http://pcdsh01.on.br/HV1991.htm> (1991-09-25)
# adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.
Rule	Brazil	1991	only	-	Oct	20	 0:00	1:00	-
Rule	Brazil	1992	only	-	Feb	 9	 0:00	0	-
# Unnumbered decree <http://pcdsh01.on.br/HV1992.htm> (1992-10-16)
# adopted by same states.
Rule	Brazil	1992	only	-	Oct	25	 0:00	1:00	-
Rule	Brazil	1993	only	-	Jan	31	 0:00	0	-
# Decree 942 <http://pcdsh01.on.br/HV942.htm> (1993-09-28)
# adopted by same states, plus AM.
# Decree 1,252 <http://pcdsh01.on.br/HV1252.htm> (1994-09-22;
# web page corrected 2004-01-07) adopted by same states, minus AM.
# Decree 1,636 <http://pcdsh01.on.br/HV1636.htm> (1995-09-14)
# adopted by same states, plus MT and TO.
# Decree 1,674 <http://pcdsh01.on.br/HV1674.htm> (1995-10-13)
# adds AL, SE.
Rule	Brazil	1993	1995	-	Oct	Sun>=11	 0:00	1:00	-
Rule	Brazil	1994	1995	-	Feb	Sun>=15	 0:00	0	-
Rule	Brazil	1996	only	-	Feb	11	 0:00	0	-
# Decree 2,000 <http://pcdsh01.on.br/HV2000.htm> (1996-09-04)
# adopted by same states, minus AL, SE.
Rule	Brazil	1996	only	-	Oct	 6	 0:00	1:00	-
Rule	Brazil	1997	only	-	Feb	16	 0:00	0	-
# From Daniel C. Sobral (1998-02-12):
# In 1997, the DS began on October 6. The stated reason was that
# because international television networks ignored Brazil's policy on DS,
# they bought the wrong times on satellite for coverage of Pope's visit.
# This year, the ending date of DS was postponed to March 1
# to help dealing with the shortages of electric power.
#
# Decree 2,317 (1997-09-04), adopted by same states.
Rule	Brazil	1997	only	-	Oct	 6	 0:00	1:00	-
# Decree 2,495 <http://pcdsh01.on.br/figuras/HV2495.JPG>
# (1998-02-10)
Rule	Brazil	1998	only	-	Mar	 1	 0:00	0	-
# Decree 2,780 <http://pcdsh01.on.br/figuras/Hv98.jpg> (1998-09-11)
# adopted by the same states as before.
Rule	Brazil	1998	only	-	Oct	11	 0:00	1:00	-
Rule	Brazil	1999	only	-	Feb	21	 0:00	0	-
# Decree 3,150 <http://pcdsh01.on.br/figuras/HV3150.gif>
# (1999-08-23) adopted by same states.
# Decree 3,188 <http://pcdsh01.on.br/DecHV99.gif> (1999-09-30)
# adds SE, AL, PB, PE, RN, CE, PI, MA and RR.
Rule	Brazil	1999	only	-	Oct	 3	 0:00	1:00	-
Rule	Brazil	2000	only	-	Feb	27	 0:00	0	-
# Decree 3,592 <http://pcdsh01.on.br/DEC3592.htm> (2000-09-06)
# adopted by the same states as before.
# Decree 3,630 <http://pcdsh01.on.br/Dec3630.jpg> (2000-10-13)
# repeals DST in PE and RR, effective 2000-10-15 00:00.
# Decree 3,632 <http://pcdsh01.on.br/Dec3632.jpg> (2000-10-17)
# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
# Decree 3,916 <http://pcdsh01.on.br/figuras/HV3916.gif>
# (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.
Rule	Brazil	2000	2001	-	Oct	Sun>=8	 0:00	1:00	-
Rule	Brazil	2001	2006	-	Feb	Sun>=15	 0:00	0	-
# Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
# 4,399 <http://www.presidencia.gov.br/CCIVIL/decreto/2002/D4399.htm>
Rule	Brazil	2002	only	-	Nov	 3	 0:00	1:00	-
# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
# 4,844 <http://www.presidencia.gov.br/CCIVIL/decreto/2003/D4844.htm>
Rule	Brazil	2003	only	-	Oct	19	 0:00	1:00	-
# Decree 5,223 (2004-10-01) reestablishes DST in MT.
# 5,223 <http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2004/Decreto/D5223.htm>
Rule	Brazil	2004	only	-	Nov	 2	 0:00	1:00	-
# Decree 5,539 <http://pcdsh01.on.br/DecHV5539.gif> (2005-09-19),
# adopted by the same states as before.
Rule	Brazil	2005	only	-	Oct	16	 0:00	1:00	-
# Decree 5,920 <http://pcdsh01.on.br/DecHV5920.gif> (2006-10-03),
# adopted by the same states as before.
Rule	Brazil	2006	only	-	Nov	 5	 0:00	1:00	-
Rule	Brazil	2007	only	-	Feb	25	 0:00	0	-
# Decree 6,212 <http://pcdsh01.on.br/DecHV6212.gif> (2007-09-26),
# adopted by the same states as before.
Rule	Brazil	2007	only	-	Oct	Sun>=8	 0:00	1:00	-
# From Frederico A. C. Neves (2008-09-10):
# According to this decree
# http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm
# [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
# 3rd Feb Sunday. There is an exception on the return date when this is
# the Carnival Sunday then the return date will be the next Sunday...
Rule	Brazil	2008	2017	-	Oct	Sun>=15	0:00	1:00	-
Rule	Brazil	2008	2011	-	Feb	Sun>=15	0:00	0	-
# Decree 7,584 <http://pcdsh01.on.br/HVdecreto7584_20111013.jpg> (2011-10-13)
# added Bahia.
Rule	Brazil	2012	only	-	Feb	Sun>=22	0:00	0	-
# Decree 7,826 <http://pcdsh01.on.br/HVdecreto7826_20121015.jpg> (2012-10-15)
# removed Bahia and added Tocantins.
# Decree 8,112 <http://pcdsh01.on.br/HVdecreto8112_20130930.JPG> (2013-09-30)
# removed Tocantins.
Rule	Brazil	2013	2014	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2015	only	-	Feb	Sun>=22	0:00	0	-
Rule	Brazil	2016	2019	-	Feb	Sun>=15	0:00	0	-
# From Steffen Thorsen (2017-12-18):
# According to many media sources, next year's DST start in Brazil will move to
# the first Sunday of November
# ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html
# From Steffen Thorsen (2017-12-20):
# http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm
# From Fábio Gomes (2018-10-04):
# The Brazilian president just announced a new change on this year DST.
# It was scheduled to start on November 4th and it was changed to November 18th.
# From Rodrigo Brüning Wessler (2018-10-15):
# The Brazilian government just announced that the change in DST was
# canceled....  Maybe the president Michel Temer also woke up one hour
# earlier today. :)
Rule	Brazil	2018	only	-	Nov	Sun>=1	0:00	1:00	-
# The last ruleset listed above says that the following states observed DST:
# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
#
# From Steffen Thorsen (2019-04-05):
# According to multiple sources the Brazilian president wants to get rid of DST.
# https://gmconline.com.br/noticias/politica/bolsonaro-horario-de-verao-deve-acabar-este-ano
# https://g1.globo.com/economia/noticia/2019/04/05/governo-anuncia-fim-do-horario-de-verao.ghtml
# From Marcus Diniz (2019-04-25):
# Brazil no longer has DST changes - decree signed today
# https://g1.globo.com/politica/noticia/2019/04/25/bolsonaro-assina-decreto-que-acaba-com-o-horario-de-verao.ghtml
# From Daniel Soares de Oliveira (2019-04-26):
# http://www.planalto.gov.br/ccivil_03/_Ato2019-2022/2019/Decreto/D9772.htm

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
#
# Fernando de Noronha (administratively part of PE)
Zone America/Noronha	-2:09:40 -	LMT	1914
			-2:00	Brazil	%z	1990 Sep 17
			-2:00	-	%z	1999 Sep 30
			-2:00	Brazil	%z	2000 Oct 15
			-2:00	-	%z	2001 Sep 13
			-2:00	Brazil	%z	2002 Oct  1
			-2:00	-	%z
# Other Atlantic islands have no permanent settlement.
# These include Trindade and Martim Vaz (administratively part of ES),
# Rocas Atoll (RN), and the St Peter and St Paul Archipelago (PE).
# Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
# it also included the Penedos.
#
# Amapá (AP), east Pará (PA)
# East Pará includes Belém, Marabá, Serra Norte, and São Félix do Xingu.
# The division between east and west Pará is the river Xingu.
# In the north a very small part from the river Javary (now Jari I guess,
# the border with Amapá) to the Amazon, then to the Xingu.
Zone America/Belem	-3:13:56 -	LMT	1914
			-3:00	Brazil	%z	1988 Sep 12
			-3:00	-	%z
#
# west Pará (PA)
# West Pará includes Altamira, Óbidos, Prainha, Oriximiná, and Santarém.
Zone America/Santarem	-3:38:48 -	LMT	1914
			-4:00	Brazil	%z	1988 Sep 12
			-4:00	-	%z	2008 Jun 24  0:00
			-3:00	-	%z
#
# Maranhão (MA), Piauí (PI), Ceará (CE), Rio Grande do Norte (RN),
# Paraíba (PB)
Zone America/Fortaleza	-2:34:00 -	LMT	1914
			-3:00	Brazil	%z	1990 Sep 17
			-3:00	-	%z	1999 Sep 30
			-3:00	Brazil	%z	2000 Oct 22
			-3:00	-	%z	2001 Sep 13
			-3:00	Brazil	%z	2002 Oct  1
			-3:00	-	%z
#
# Pernambuco (PE) (except Atlantic islands)
Zone America/Recife	-2:19:36 -	LMT	1914
			-3:00	Brazil	%z	1990 Sep 17
			-3:00	-	%z	1999 Sep 30
			-3:00	Brazil	%z	2000 Oct 15
			-3:00	-	%z	2001 Sep 13
			-3:00	Brazil	%z	2002 Oct  1
			-3:00	-	%z
#
# Tocantins (TO)
Zone America/Araguaina	-3:12:48 -	LMT	1914
			-3:00	Brazil	%z	1990 Sep 17
			-3:00	-	%z	1995 Sep 14
			-3:00	Brazil	%z	2003 Sep 24
			-3:00	-	%z	2012 Oct 21
			-3:00	Brazil	%z	2013 Sep
			-3:00	-	%z
#
# Alagoas (AL), Sergipe (SE)
Zone America/Maceio	-2:22:52 -	LMT	1914
			-3:00	Brazil	%z	1990 Sep 17
			-3:00	-	%z	1995 Oct 13
			-3:00	Brazil	%z	1996 Sep  4
			-3:00	-	%z	1999 Sep 30
			-3:00	Brazil	%z	2000 Oct 22
			-3:00	-	%z	2001 Sep 13
			-3:00	Brazil	%z	2002 Oct  1
			-3:00	-	%z
#
# Bahia (BA)
# There are too many Salvadors elsewhere, so use America/Bahia instead
# of America/Salvador.
Zone America/Bahia	-2:34:04 -	LMT	1914
			-3:00	Brazil	%z	2003 Sep 24
			-3:00	-	%z	2011 Oct 16
			-3:00	Brazil	%z	2012 Oct 21
			-3:00	-	%z
#
# Goiás (GO), Distrito Federal (DF), Minas Gerais (MG),
# Espírito Santo (ES), Rio de Janeiro (RJ), São Paulo (SP), Paraná (PR),
# Santa Catarina (SC), Rio Grande do Sul (RS)
Zone America/Sao_Paulo	-3:06:28 -	LMT	1914
			-3:00	Brazil	%z	1963 Oct 23  0:00
			-3:00	1:00	%z	1964
			-3:00	Brazil	%z
#
# Mato Grosso do Sul (MS)
Zone America/Campo_Grande -3:38:28 -	LMT	1914
			-4:00	Brazil	%z
#
# Mato Grosso (MT)
Zone America/Cuiaba	-3:44:20 -	LMT	1914
			-4:00	Brazil	%z	2003 Sep 24
			-4:00	-	%z	2004 Oct  1
			-4:00	Brazil	%z
#
# Rondônia (RO)
Zone America/Porto_Velho -4:15:36 -	LMT	1914
			-4:00	Brazil	%z	1988 Sep 12
			-4:00	-	%z
#
# Roraima (RR)
Zone America/Boa_Vista	-4:02:40 -	LMT	1914
			-4:00	Brazil	%z	1988 Sep 12
			-4:00	-	%z	1999 Sep 30
			-4:00	Brazil	%z	2000 Oct 15
			-4:00	-	%z
#
# east Amazonas (AM): Boca do Acre, Jutaí, Manaus, Floriano Peixoto
# The great circle line from Tabatinga to Porto Acre divides
# east from west Amazonas.
Zone America/Manaus	-4:00:04 -	LMT	1914
			-4:00	Brazil	%z	1988 Sep 12
			-4:00	-	%z	1993 Sep 28
			-4:00	Brazil	%z	1994 Sep 22
			-4:00	-	%z
#
# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
#	Eirunepé, Envira, Ipixuna
Zone America/Eirunepe	-4:39:28 -	LMT	1914
			-5:00	Brazil	%z	1988 Sep 12
			-5:00	-	%z	1993 Sep 28
			-5:00	Brazil	%z	1994 Sep 22
			-5:00	-	%z	2008 Jun 24  0:00
			-4:00	-	%z	2013 Nov 10
			-5:00	-	%z
#
# Acre (AC)
Zone America/Rio_Branco	-4:31:12 -	LMT	1914
			-5:00	Brazil	%z	1988 Sep 12
			-5:00	-	%z	2008 Jun 24  0:00
			-4:00	-	%z	2013 Nov 10
			-5:00	-	%z

# Chile

# From Paul Eggert (2022-03-15):
# Shanks & Pottenger says America/Santiago introduced standard time in
# 1890 and rounds its UT offset to 70W40; guess that in practice this
# was the same offset as in 1916-1919.  It also says Pacific/Easter
# standardized on 109W22 in 1890; assume this didn't change the clocks.
#
# Dates for America/Santiago from 1910 to 2004 are primarily from
# the following source, cited by Oscar van Vlijmen (2006-10-08):
# [1] Chile Law
# http://www.webexhibits.org/daylightsaving/chile.html
# This contains a copy of this official table:
# Cambios en la hora oficial de Chile desde 1900 (retrieved 2008-03-30)
# https://web.archive.org/web/20080330200901/http://www.horaoficial.cl/cambio.htm
# [1] needs several corrections, though.
#
# The first set of corrections is from:
# [2] History of the Official Time of Chile
# http://www.horaoficial.cl/ing/horaof_ing.html (retrieved 2012-03-06).  See:
# https://web.archive.org/web/20120306042032/http://www.horaoficial.cl/ing/horaof_ing.html
# This is an English translation of:
# Historia de la hora oficial de Chile (retrieved 2012-10-24).  See:
# https://web.archive.org/web/20121024234627/http://www.horaoficial.cl/horaof.htm
# A fancier Spanish version (requiring mouse-clicking) is at:
# http://www.horaoficial.cl/historia_hora.php
# Conflicts between [1] and [2] were resolved as follows:
#
#  - [1] says the 1910 transition was Jan 1, [2] says Jan 10 and cites
#    Boletín No. 1, Aviso No. 1 (1910).  Go with [2].
#
#  - [1] says SMT was -4:42:45, [2] says Chile's official time from
#    1916 to 1919 was -4:42:46.3, the meridian of Chile's National
#    Astronomical Observatory (OAN), then located in what is now
#    Quinta Normal in Santiago.  Go with [1], as this matches the meridian
#    referred to by the relevant Chilean laws to this day.
#
#  - [1] says the 1918 transition was Sep 1, [2] says Sep 10 and cites
#    Boletín No. 22, Aviso No. 129/1918 (1918-08-23).  Go with [2].
#
#  - [1] does not give times for transitions; assume they occur
#    at midnight mainland time, the current common practice.  However,
#    go with [2]'s specification of 23:00 for the 1947-05-21 transition.
#
# Another correction to [1] is from Jesper Nørgaard Welen, who
# wrote (2006-10-08), "I think that there are some obvious mistakes in
# the suggested link from Oscar van Vlijmen,... for instance entry 66
# says that GMT-4 ended 1990-09-12 while entry 67 only begins GMT-3 at
# 1990-09-15 (they should have been 1990-09-15 and 1990-09-16
# respectively), but anyhow it clears up some doubts too."
#
# Data for Pacific/Easter from 1910 through 1967 come from Shanks &
# Pottenger.  After that, for lack of better info assume
# Pacific/Easter is always two hours behind America/Santiago;
# this is known to work for DST transitions starting in 2008 and
# may well be true for earlier transitions.

# From Tim Parenti (2022-07-06):
# For a brief period of roughly six weeks in 1946, DST was only observed on an
# emergency basis in specific regions of central Chile; namely, "the national
# territory between the provinces of Coquimbo and Concepción, inclusive".
# This was enacted by Decree 3,891, dated 1946-07-13, and took effect
# 1946-07-14 24:00, advancing these central regions to -03.
# https://www.diariooficial.interior.gob.cl/versiones-anteriores/do-h/19460715/#page/1
# The decree contemplated "[t]hat this advancement of the Official Time, even
# though it has been proposed for the cities of Santiago and Valparaíso only,
# must be agreed with that of other cities, due to the connection of various
# activities that require it, such as, for example, the operation of rail
# services".  It was originally set to expire after 30 days but was extended
# through 1946-08-31 by Decree 4,506, dated 1946-08-13.
# https://www.diariooficial.interior.gob.cl/versiones-anteriores/do-h/19460814/#page/1
#
# Law Number 8,522, promulgated 1946-08-27, reunified Chilean clocks at their
# new "Summer Time" of -04, reckoned as that of "the meridian of the
# Astronomical Observatory of Lo Espejo, advanced by 42 minutes and 45
# seconds".  Although this law specified the new Summer Time to start on 1
# September each year, a special "transitional article" started it a few days
# early, as soon as the law took effect.  As the law was to take force "from
# the date of its publication in the 'Diario Oficial', which happened the
# following day, presume the change took place in Santiago and its environs
# from 24:00 -03 to 23:00 -04 on Wednesday 1946-08-28.  Although this was a
# no-op for wall clocks in the north and south of the country, put their formal
# start to DST an hour later when they reached 24:00 -04.
# https://www.diariooficial.interior.gob.cl/versiones-anteriores/do-h/19460828/#page/1
# After a brief "Winter Time" stint at -05 beginning 1947-04-01, Law Number
# 8,777, promulgated 1947-05-17, established year-round -04 "from 23:00 on the
# second day after it is published in the 'Diario Oficial'."  It was published
# on Monday 1947-05-19 and so took effect from Wednesday 1947-05-21 23:00.
# https://www.diariooficial.interior.gob.cl/versiones-anteriores/do-h/19470519/#page/1

# From Eduardo Krell (1995-10-19):
# The law says to switch to DST at midnight [24:00] on the second SATURDAY
# of October....  The law is the same for March and October.
# (1998-09-29):
# Because of the drought this year, the government decided to go into
# DST earlier (saturday 9/26 at 24:00). This is a one-time change only ...
# (unless there's another dry season next year, I guess).

# From Julio I. Pacheco Troncoso (1999-03-18):
# Because of the same drought, the government decided to end DST later,
# on April 3, (one-time change).

# From Germán Poo-Caamaño (2008-03-03):
# Due to drought, Chile extends Daylight Time in three weeks.  This
# is one-time change (Saturday 3/29 at 24:00 for America/Santiago
# and Saturday 3/29 at 22:00 for Pacific/Easter)
# The Supreme Decree is located at
# http://www.shoa.cl/servicios/supremo316.pdf
#
# From José Miguel Garrido (2008-03-05):
# http://www.shoa.cl/noticias/2008/04hora/hora.htm

# From Angel Chiang (2010-03-04):
# Subject: DST in Chile exceptionally extended to 3 April due to earthquake
# http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098
#
# From Arthur David Olson (2010-03-06):
# Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.

# From Glenn Eychaner (2011-03-28):
# http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
# In English:
# Chile's clocks will go back an hour this year on the 7th of May instead
# of this Saturday. They will go forward again the 3rd Saturday in
# August, not in October as they have since 1968.

# From Mauricio Parada (2012-02-22), translated by Glenn Eychaner (2012-02-23):
# As stated in the website of the Chilean Energy Ministry
# http://www.minenergia.cl/ministerio/noticias/generales/gobierno-anuncia-fechas-de-cambio-de.html
# The Chilean Government has decided to postpone the entrance into winter time
# (to leave DST) from March 11 2012 to April 28th 2012....
# Quote from the website communication:
#
# 6. For the year 2012, the dates of entry into winter time will be as follows:
# a. Saturday April 28, 2012, clocks should go back 60 minutes; that is, at
# 23:59:59, instead of passing to 0:00, the time should be adjusted to be 23:00
# of the same day.
# b. Saturday, September 1, 2012, clocks should go forward 60 minutes; that is,
# at 23:59:59, instead of passing to 0:00, the time should be adjusted to be
# 01:00 on September 2.

# From Steffen Thorsen (2013-02-15):
# According to several news sources, Chile has extended DST this year,
# they will end DST later and start DST earlier than planned.  They
# hope to save energy.  The new end date is 2013-04-28 00:00 and new
# start date is 2013-09-08 00:00....
# http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm

# From José Miguel Garrido (2014-02-19):
# Today appeared in the Diario Oficial a decree amending the time change
# dates to 2014.
# DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC)
# DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
# http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf

# From Eduardo Romero Urra (2015-03-03):
# Today has been published officially that Chile will use the DST time
# permanently until March 25 of 2017
# http://www.diariooficial.interior.gob.cl/media/2015/03/03/1-large.jpg
#
# From Paul Eggert (2015-03-03):
# For now, assume that the extension will persist indefinitely.

# From Juan Correa (2016-03-18):
# The decree regarding DST has been published in today's Official Gazette:
# http://www.diariooficial.interior.gob.cl/versiones-anteriores/do/20160318/
# http://www.leychile.cl/Navegar?idNorma=1088502
# It does consider the second Saturday of May and August as the dates
# for the transition; and it lists DST dates until 2019, but I think
# this scheme will stick.
#
# From Paul Eggert (2016-03-18):
# For now, assume the pattern holds for the indefinite future.
# The decree says transitions occur at 24:00; in practice this appears
# to mean 24:00 mainland time, not 24:00 local time, so that Easter
# Island is always two hours behind the mainland.

# From Juan Correa (2016-12-04):
# Magallanes region ... will keep DST (UTC -3) all year round....
# http://www.soychile.cl/Santiago/Sociedad/2016/12/04/433428/Bachelet-firmo-el-decreto-para-establecer-un-horario-unico-para-la-Region-de-Magallanes.aspx
# From Deborah Goldsmith (2017-01-19):
# http://www.diariooficial.interior.gob.cl/publicaciones/2017/01/17/41660/01/1169626.pdf

# From Juan Correa (2018-08-13):
# As of moments ago, the Ministry of Energy in Chile has announced the new
# schema for DST. ...  Announcement in video (in Spanish):
# https://twitter.com/MinEnergia/status/1029000399129374720
# From Yonathan Dossow (2018-08-13):
# The video says "first Saturday of September", we all know it means Sunday at
# midnight.
# From Tim Parenti (2018-08-13):
# Translating the captions on the video at 0:44-0:55, "We want to announce as
# Government that from 2019, Winter Time will be increased to 5 months, between
# the first Saturday of April and the first Saturday of September."
# At 2:08-2:20, "The Magallanes region will maintain its current time, as
# decided by the citizens during 2017, but our Government will promote a
# regional dialogue table to gather their opinion on this matter."
# https://twitter.com/MinEnergia/status/1029009354001973248
# "We will keep the new time policy unchanged for at least the next 4 years."
# So we extend the new rules on Saturdays at 24:00 mainland time indefinitely.
# From Juan Correa (2019-02-04):
# http://www.diariooficial.interior.gob.cl/publicaciones/2018/11/23/42212/01/1498738.pdf

# From Juan Correa (2022-04-02):
# I found there was a decree published last Thursday that will keep
# Magallanes region to UTC -3 "indefinitely". The decree is available at
# https://www.diariooficial.interior.gob.cl/publicaciones/2022/03/31/43217-B/01/2108910.pdf

# From Juan Correa (2022-08-09):
# the Internal Affairs Ministry (Ministerio del Interior) informed DST
# for America/Santiago will start on midnight of September 11th;
# and will end on April 1st, 2023. Magallanes region (America/Punta_Arenas)
# will keep UTC -3 "indefinitely"...  This is because on September 4th
# we will have a voting whether to approve a new Constitution.
#
# From Eduardo Romero Urra (2022-08-17):
# https://www.diariooficial.interior.gob.cl/publicaciones/2022/08/13/43327/01/2172567.pdf
#
# From Paul Eggert (2022-08-17):
# Although the presidential decree stops at fall 2026, assume that
# similar DST rules will continue thereafter.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Chile	1927	1931	-	Sep	 1	0:00	1:00	-
Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
Rule	Chile	1968	only	-	Nov	 3	4:00u	1:00	-
Rule	Chile	1969	only	-	Mar	30	3:00u	0	-
Rule	Chile	1969	only	-	Nov	23	4:00u	1:00	-
Rule	Chile	1970	only	-	Mar	29	3:00u	0	-
Rule	Chile	1971	only	-	Mar	14	3:00u	0	-
Rule	Chile	1970	1972	-	Oct	Sun>=9	4:00u	1:00	-
Rule	Chile	1972	1986	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1973	only	-	Sep	30	4:00u	1:00	-
Rule	Chile	1974	1987	-	Oct	Sun>=9	4:00u	1:00	-
Rule	Chile	1987	only	-	Apr	12	3:00u	0	-
Rule	Chile	1988	1990	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1988	1989	-	Oct	Sun>=9	4:00u	1:00	-
Rule	Chile	1990	only	-	Sep	16	4:00u	1:00	-
Rule	Chile	1991	1996	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1991	1997	-	Oct	Sun>=9	4:00u	1:00	-
Rule	Chile	1997	only	-	Mar	30	3:00u	0	-
Rule	Chile	1998	only	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1998	only	-	Sep	27	4:00u	1:00	-
Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
Rule	Chile	1999	2010	-	Oct	Sun>=9	4:00u	1:00	-
Rule	Chile	2000	2007	-	Mar	Sun>=9	3:00u	0	-
# N.B.: the end of March 29 in Chile is March 30 in Universal time,
# which is used below in specifying the transition.
Rule	Chile	2008	only	-	Mar	30	3:00u	0	-
Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	-
Rule	Chile	2012	2014	-	Apr	Sun>=23	3:00u	0	-
Rule	Chile	2012	2014	-	Sep	Sun>=2	4:00u	1:00	-
Rule	Chile	2016	2018	-	May	Sun>=9	3:00u	0	-
Rule	Chile	2016	2018	-	Aug	Sun>=9	4:00u	1:00	-
Rule	Chile	2019	max	-	Apr	Sun>=2	3:00u	0	-
Rule	Chile	2019	2021	-	Sep	Sun>=2	4:00u	1:00	-
Rule	Chile	2022	only	-	Sep	Sun>=9	4:00u	1:00	-
Rule	Chile	2023	max	-	Sep	Sun>=2	4:00u	1:00	-
# IATA SSIM anomalies: (1992-02) says 1992-03-14;
# (1996-09) says 1998-03-08.  Ignore these.
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone America/Santiago	-4:42:45 -	LMT	1890
			-4:42:45 -	SMT	1910 Jan 10 # Santiago Mean Time
			-5:00	-	%z	1916 Jul  1
			-4:42:45 -	SMT	1918 Sep 10
			-4:00	-	%z	1919 Jul  1
			-4:42:45 -	SMT	1927 Sep  1
			-5:00	Chile	%z	1932 Sep  1
			-4:00	-	%z	1942 Jun  1
			-5:00	-	%z	1942 Aug  1
			-4:00	-	%z	1946 Jul 14 24:00
			-4:00	1:00	%z	1946 Aug 28 24:00 # central CL
			-5:00	1:00	%z	1947 Mar 31 24:00
			-5:00	-	%z	1947 May 21 23:00
			-4:00	Chile	%z
Zone America/Punta_Arenas -4:43:40 -	LMT	1890
			-4:42:45 -	SMT	1910 Jan 10
			-5:00	-	%z	1916 Jul  1
			-4:42:45 -	SMT	1918 Sep 10
			-4:00	-	%z	1919 Jul  1
			-4:42:45 -	SMT	1927 Sep  1
			-5:00	Chile	%z	1932 Sep  1
			-4:00	-	%z	1942 Jun  1
			-5:00	-	%z	1942 Aug  1
			-4:00	-	%z	1946 Aug 28 24:00
			-5:00	1:00	%z	1947 Mar 31 24:00
			-5:00	-	%z	1947 May 21 23:00
			-4:00	Chile	%z	2016 Dec  4
			-3:00	-	%z
Zone Pacific/Easter	-7:17:28 -	LMT	1890
			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
			-7:00	Chile	%z	1982 Mar 14 3:00u # Easter Time
			-6:00	Chile	%z
#
# Salas y Gómez Island is uninhabited.
# Other Chilean locations, including Juan Fernández Is, Desventuradas Is,
# and Antarctic bases, are like America/Santiago.

# Antarctic base using South American rules
# (See the file 'antarctica' for more.)
#
# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
#
# From Ethan Dicks (1996-10-06):
# It keeps the same time as Punta Arenas, Chile, because, just like us
# and the South Pole, that's the other end of their supply line....
# I verified with someone who was there that since 1980,
# Palmer has followed Chile.  Prior to that, before the Falklands War,
# Palmer used to be supplied from Argentina.
#
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone Antarctica/Palmer	0	-	-00	1965
			-4:00	Arg	%z	1969 Oct  5
			-3:00	Arg	%z	1982 May
			-4:00	Chile	%z	2016 Dec  4
			-3:00	-	%z

# Colombia

# Milne gives 4:56:16.4 for Bogotá time in 1899.  He writes,
# "A variation of fifteen minutes in the public clocks of Bogota is not rare."

# From Alois Treindl (2022-11-10):
# End of time change in Colombia 1993 ... should be 6 February 24h ...
# DECRETO 267 DE 1993
# https://www.suin-juriscol.gov.co/viewDocument.asp?ruta=Decretos/1061335

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	CO	1992	only	-	May	 3	 0:00	1:00	-
Rule	CO	1993	only	-	Feb	 6	24:00	0	-
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
		#STDOFF	-4:56:16.4
Zone	America/Bogota	-4:56:16 -	LMT	1884 Mar 13
			-4:56:16 -	BMT	1914 Nov 23 # Bogotá Mean Time
			-5:00	CO	%z
# Malpelo, Providencia, San Andres
# no information; probably like America/Bogota


# Ecuador
#
# Milne says the Central and South American Telegraph Company used -5:24:15.
#
# From Alois Treindl (2016-12-15):
# https://www.elcomercio.com/actualidad/hora-sixto-1993.html
# ... Whether the law applied also to Galápagos, I do not know.
# From Paul Eggert (2016-12-15):
# https://www.elcomercio.com/afull/modificacion-husohorario-ecuador-presidentes-decreto.html
# This says President Sixto Durán Ballén signed decree No. 285, which
# established DST from 1992-11-28 to 1993-02-05; it does not give transition
# times.  The people called it "hora de Sixto" ("Sixto hour").  The change did
# not go over well; a popular song "Qué hora es" by Jaime Guevara had lyrics
# that included "Amanecía en mitad de la noche, los guaguas iban a clase sin
# sol" ("It was dawning in the middle of the night, the buses went to class
# without sun").  Although Ballén's campaign slogan was "Ni un paso atrás"
# (Not one step back), the clocks went back in 1993 and the experiment was not
# repeated.  For now, assume transitions were at 00:00 local time country-wide.
#
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Ecuador	1992	only	-	Nov	28	0:00	1:00	-
Rule	Ecuador	1993	only	-	Feb	 5	0:00	0	-
#
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone America/Guayaquil	-5:19:20 -	LMT	1890
			-5:14:00 -	QMT	1931 # Quito Mean Time
			-5:00	Ecuador	%z
Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
			-5:00	-	%z	1986
			-6:00	Ecuador	%z

# Falklands

# From Paul Eggert (2006-03-22):
# Between 1990 and 2000 inclusive, Shanks & Pottenger and the IATA agree except
# the IATA gives 1996-09-08.  Go with Shanks & Pottenger.

# From Falkland Islands Government Office, London (2001-01-22)
# via Jesper Nørgaard:
# ... the clocks revert back to Local Mean Time at 2 am on Sunday 15
# April 2001 and advance one hour to summer time at 2 am on Sunday 2
# September.  It is anticipated that the clocks will revert back at 2
# am on Sunday 21 April 2002 and advance to summer time at 2 am on
# Sunday 1 September.

# From Rives McDow (2001-02-13):
#
# I have communicated several times with people there, and the last
# time I had communications that was helpful was in 1998.  Here is
# what was said then:
#
# "The general rule was that Stanley used daylight saving and the Camp
# did not. However for various reasons many people in the Camp have
# started to use daylight saving (known locally as 'Stanley Time')
# There is no rule as to who uses daylight saving - it is a matter of
# personal choice and so it is impossible to draw a map showing who
# uses it and who does not. Any list would be out of date as soon as
# it was produced. This year daylight saving ended on April 18/19th
# and started again on September 12/13th.  I do not know what the rule
# is, but can find out if you like.  We do not change at the same time
# as UK or Chile."
#
# I did have in my notes that the rule was "Second Saturday in Sep at
# 0:00 until third Saturday in Apr at 0:00".  I think that this does
# not agree in some cases with Shanks; is this true?
#
# Also, there is no mention in the list that some areas in the
# Falklands do not use DST.  I have found in my communications there
# that these areas are on the western half of East Falkland and all of
# West Falkland.  Stanley is the only place that consistently observes
# DST.  Again, as in other places in the world, the farmers don't like
# it.  West Falkland is almost entirely sheep farmers.
#
# I know one lady there that keeps a list of which farm keeps DST and
# which doesn't each year.  She runs a shop in Stanley, and says that
# the list changes each year.  She uses it to communicate to her
# customers, catching them when they are home for lunch or dinner.

# From Paul Eggert (2001-03-05):
# For now, we'll just record the time in Stanley, since we have no
# better info.

# From Steffen Thorsen (2011-04-01):
# The Falkland Islands will not turn back clocks this winter, but stay on
# daylight saving time.
#
# One source:
# http://www.falklandnews.com/public/story.cfm?get=5914&source=3
#
# We have gotten this confirmed by a clerk of the legislative assembly:
# Normally the clocks revert to Local Mean Time (UTC/GMT -4 hours) on the
# third Sunday of April at 0200hrs and advance to Summer Time (UTC/GMT -3
# hours) on the first Sunday of September at 0200hrs.
#
# IMPORTANT NOTE: During 2011, on a trial basis, the Falkland Islands
# will not revert to local mean time, but clocks will remain on Summer
# time (UTC/GMT - 3 hours) throughout the whole of 2011.  Any long term
# change to local time following the trial period will be notified.
#
# From Andrew Newman (2012-02-24)
# A letter from Justin McPhee, Chief Executive,
# Cable & Wireless Falkland Islands (dated 2012-02-22)
# states...
#   The current Atlantic/Stanley entry under South America expects the
#   clocks to go back to standard Falklands Time (FKT) on the 15th April.
#   The database entry states that in 2011 Stanley was staying on fixed
#   summer time on a trial basis only.  FIG need to contact IANA and/or
#   the maintainers of the database to inform them we're adopting
#   the same policy this year and suggest recommendations for future years.
#
# For now we will assume permanent -03 for the Falklands
# until advised differently (to apply for 2012 and beyond, after the 2011
# experiment was apparently successful.)
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Falk	1937	1938	-	Sep	lastSun	0:00	1:00	-
Rule	Falk	1938	1942	-	Mar	Sun>=19	0:00	0	-
Rule	Falk	1939	only	-	Oct	1	0:00	1:00	-
Rule	Falk	1940	1942	-	Sep	lastSun	0:00	1:00	-
Rule	Falk	1943	only	-	Jan	1	0:00	0	-
Rule	Falk	1983	only	-	Sep	lastSun	0:00	1:00	-
Rule	Falk	1984	1985	-	Apr	lastSun	0:00	0	-
Rule	Falk	1984	only	-	Sep	16	0:00	1:00	-
Rule	Falk	1985	2000	-	Sep	Sun>=9	0:00	1:00	-
Rule	Falk	1986	2000	-	Apr	Sun>=16	0:00	0	-
Rule	Falk	2001	2010	-	Apr	Sun>=15	2:00	0	-
Rule	Falk	2001	2010	-	Sep	Sun>=1	2:00	1:00	-
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
			-3:51:24 -	SMT	1912 Mar 12 # Stanley Mean Time
			-4:00	Falk	%z	1983 May
			-3:00	Falk	%z	1985 Sep 15
			-4:00	Falk	%z	2010 Sep  5  2:00
			-3:00	-	%z

# French Guiana
# For the 1911/1912 establishment of standard time in French possessions, see:
# Société Française de Physique, Recueil de constantes physiques (1913),
# page 752, 18b.
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone America/Cayenne	-3:29:20 -	LMT	1911 Jul  1
			-4:00	-	%z	1967 Oct
			-3:00	-	%z

# Guyana

# From P Chan (2020-11-27):
# https://books.google.com/books?id=5-5CAQAAMAAJ&pg=SA1-PA547
# The Official Gazette of British Guiana. (New Series.) Vol. XL. July to
# December, 1915, p 1547, lists as several notes:
# "Local Mean Time 3 hours 52 mins. 39 secs. slow of Greenwich Mean Time
# (Georgetown.) From 1st August, 1911, British Guiana Standard Mean Time 4
# hours slow of Greenwich Mean Time, by notice in Official Gazette on 1st July,
# 1911.  From 1st March, 1915, British Guiana Standard Mean Time 3 hours 45
# mins. 0 secs. slow of Greenwich Mean Time, by notice in Official Gazette on
# 23rd January, 1915."
#
# https://parliament.gov.gy/documents/acts/10923-act_no._27_of_1975_-_interpretation_and_general_clauses_(amendment)_act_1975.pdf
# Interpretation and general clauses (Amendment) Act 1975 (Act No. 27 of 1975)
# [dated 1975-07-31]
# "This Act...shall come into operation on 1st August, 1975."
# "...where any expression of time occurs...the time referred to shall signify
# the standard time of Guyana which shall be three hours behind Greenwich Mean
# Time."
#
# Circular No. 10/1992 dated 1992-03-20
# https://dps.gov.gy/wp-content/uploads/2018/12/1992-03-20-Circular-010.pdf
# "...cabinet has decided that with effect from Sunday 29th March, 1992, Guyana
# Standard Time would be re-established at 01:00 hours by adjusting the hands
# of the clock back to 24:00 hours."
# Legislated in the Interpretation and general clauses (Amendment) Act 1992
# (Act No. 6 of 1992) [passed 1992-03-27, published 1992-04-18]
# https://parliament.gov.gy/documents/acts/5885-6_of_1992_interpretation_and_general_clauses_(amendment)_act_1992.pdf

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	America/Guyana	-3:52:39 -	LMT	1911 Aug  1 # Georgetown
			-4:00	-	%z	1915 Mar  1
			-3:45	-	%z	1975 Aug  1
			-3:00	-	%z	1992 Mar 29  1:00
			-4:00	-	%z

# Paraguay
#
# From Paul Eggert (2006-03-22):
# Shanks & Pottenger say that spring transitions are 01:00 -> 02:00,
# and autumn transitions are 00:00 -> 23:00.  Go with pre-1999
# editions of Shanks, and with the IATA, who say transitions occur at 00:00.
#
# From Waldemar Villamayor-Venialbo (2013-09-20):
# No time of the day is established for the adjustment, so people normally
# adjust their clocks at 0 hour of the given dates.
#
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Para	1975	1988	-	Oct	 1	0:00	1:00	-
Rule	Para	1975	1978	-	Mar	 1	0:00	0	-
Rule	Para	1979	1991	-	Apr	 1	0:00	0	-
Rule	Para	1989	only	-	Oct	22	0:00	1:00	-
Rule	Para	1990	only	-	Oct	 1	0:00	1:00	-
Rule	Para	1991	only	-	Oct	 6	0:00	1:00	-
Rule	Para	1992	only	-	Mar	 1	0:00	0	-
Rule	Para	1992	only	-	Oct	 5	0:00	1:00	-
Rule	Para	1993	only	-	Mar	31	0:00	0	-
Rule	Para	1993	1995	-	Oct	 1	0:00	1:00	-
Rule	Para	1994	1995	-	Feb	lastSun	0:00	0	-
Rule	Para	1996	only	-	Mar	 1	0:00	0	-
# IATA SSIM (2000-02) says 1999-10-10; ignore this for now.
# From Steffen Thorsen (2000-10-02):
# I have three independent reports that Paraguay changed to DST this Sunday
# (10-01).
#
# Translated by Gwillim Law (2001-02-27) from
# Noticias, a daily paper in Asunción, Paraguay (2000-10-01):
# http://www.diarionoticias.com.py/011000/nacional/naciona1.htm
# Starting at 0:00 today, the clock will be set forward 60 minutes, in
# fulfillment of Decree No. 7,273 of the Executive Power....  The time change
# system has been operating for several years.  Formerly there was a separate
# decree each year; the new law has the same effect, but permanently.  Every
# year, the time will change on the first Sunday of October; likewise, the
# clock will be set back on the first Sunday of March.
#
Rule	Para	1996	2001	-	Oct	Sun>=1	0:00	1:00	-
# IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger.
Rule	Para	1997	only	-	Feb	lastSun	0:00	0	-
# Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but
# (1999-09) reports no date; go with above sources and Gerd Knops (2001-02-27).
Rule	Para	1998	2001	-	Mar	Sun>=1	0:00	0	-
# From Rives McDow (2002-02-28):
# A decree was issued in Paraguay (No. 16350) on 2002-02-26 that changed the
# dst method to be from the first Sunday in September to the first Sunday in
# April.
Rule	Para	2002	2004	-	Apr	Sun>=1	0:00	0	-
Rule	Para	2002	2003	-	Sep	Sun>=1	0:00	1:00	-
#
# From Jesper Nørgaard Welen (2005-01-02):
# There are several sources that claim that Paraguay made
# a timezone rule change in autumn 2004.
# From Steffen Thorsen (2005-01-05):
# Decree 1,867 (2004-03-05)
# From Carlos Raúl Perasso via Jesper Nørgaard Welen (2006-10-13)
# http://www.presidencia.gov.py/decretos/D1867.pdf
Rule	Para	2004	2009	-	Oct	Sun>=15	0:00	1:00	-
Rule	Para	2005	2009	-	Mar	Sun>=8	0:00	0	-
# From Carlos Raúl Perasso (2010-02-18):
# By decree number 3958 issued yesterday
# http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf
# Paraguay changes its DST schedule, postponing the March rule to April and
# modifying the October date. The decree reads:
# ...
# Art. 1. It is hereby established that from the second Sunday of the month of
# April of this year (2010), the official time is to be set back 60 minutes,
# and that on the first Sunday of the month of October, it is to be set
# forward 60 minutes, in all the territory of the Paraguayan Republic.
# ...
Rule	Para	2010	max	-	Oct	Sun>=1	0:00	1:00	-
Rule	Para	2010	2012	-	Apr	Sun>=8	0:00	0	-
#
# From Steffen Thorsen (2013-03-07):
# Paraguay will end DST on 2013-03-24 00:00....
# http://www.ande.gov.py/interna.php?id=1075
#
# From Carlos Raúl Perasso (2013-03-15):
# The change in Paraguay is now final.  Decree number 10780
# http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf
# From Carlos Raúl Perasso (2014-02-28):
# Decree 1264 can be found at:
# http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf
#
# From Paul Eggert (2023-07-26):
# Transition dates are now set by Law No. 7115, not by presidential decree.
# https://www.abc.com.py/politica/2023/07/12/promulgacion-el-cambio-de-hora-sera-por-ley/
# From Carlos Raúl Perasso (2023-07-27):
# http://silpy.congreso.gov.py/descarga/ley-144138
Rule	Para	2013	max	-	Mar	Sun>=22	0:00	0	-

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone America/Asuncion	-3:50:40 -	LMT	1890
			-3:50:40 -	AMT	1931 Oct 10 # Asunción Mean Time
			-4:00	-	%z	1972 Oct
			-3:00	-	%z	1974 Apr
			-4:00	Para	%z

# Peru
#
# From Evelyn C. Leeper via Mark Brader (2003-10-26)
# <news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net>:
# When we were in Peru in 1985-1986, they apparently switched over
# sometime between December 29 and January 3 while we were on the Amazon.
#
# From Paul Eggert (2006-03-22):
# Shanks & Pottenger don't have this transition.  Assume 1986 was like 1987.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Peru	1938	only	-	Jan	 1	0:00	1:00	-
Rule	Peru	1938	only	-	Apr	 1	0:00	0	-
Rule	Peru	1938	1939	-	Sep	lastSun	0:00	1:00	-
Rule	Peru	1939	1940	-	Mar	Sun>=24	0:00	0	-
Rule	Peru	1986	1987	-	Jan	 1	0:00	1:00	-
Rule	Peru	1986	1987	-	Apr	 1	0:00	0	-
Rule	Peru	1990	only	-	Jan	 1	0:00	1:00	-
Rule	Peru	1990	only	-	Apr	 1	0:00	0	-
# IATA is ambiguous for 1993/1995; go with Shanks & Pottenger.
Rule	Peru	1994	only	-	Jan	 1	0:00	1:00	-
Rule	Peru	1994	only	-	Apr	 1	0:00	0	-
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	America/Lima	-5:08:12 -	LMT	1890
			-5:08:36 -	LMT	1908 Jul 28 # Lima Mean Time?
			-5:00	Peru	%z

# South Georgia
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890 # Grytviken
			-2:00	-	%z

# South Sandwich Is
# uninhabited; scientific personnel have wintered

# Suriname
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone America/Paramaribo	-3:40:40 -	LMT	1911
			-3:40:52 -	PMT	1935     # Paramaribo Mean Time
			-3:40:36 -	PMT	1945 Oct    # The capital moved?
			-3:30	-	%z	1984 Oct
			-3:00	-	%z

# Uruguay
# From Paul Eggert (1993-11-18):
# Uruguay wins the prize for the strangest peacetime manipulation of the rules.
#
# From Tim Parenti (2018-02-20), per Jeremie Bonjour (2018-01-31) and Michael
# Deckers (2018-02-20):
# ... At least they kept good records...
#
# http://www.armada.mil.uy/ContenidosPDFs/sohma/web/almanaque/almanaque_2018.pdf#page=36
# Page 36 of Almanaque 2018, published by the Oceanography, Hydrography, and
# Meteorology Service of the Uruguayan Navy, seems to give many transitions
# with greater clarity than we've had before.  It directly references many laws
# and decrees which are, in turn, referenced below.  They can be viewed in the
# public archives of the Diario Oficial (in Spanish) at
# http://www.impo.com.uy/diariooficial/
#
# Ley No. 3920 of 1908-06-10 placed the determination of legal time under the
# auspices of the National Institute for the Prediction of Time.  It is unclear
# exactly what offset was used during this period, though Ley No. 7200 of
# 1920-04-23 used the Observatory of the National Meteorological Institute in
# Montevideo (34° 54' 33" S, 56° 12' 45" W) as its reference meridian,
# retarding legal time by 15 minutes 9 seconds from 1920-04-30 24:00,
# resulting in UT-04.  Assume the corresponding LMT of UT-03:44:51 (given on
# page 725 of the Proceedings of the Second Pan-American Scientific Congress,
# 1915-1916) was in use, and merely became official from 1908-06-10.
# https://www.impo.com.uy/diariooficial/1908/06/18/12
# https://www.impo.com.uy/diariooficial/1920/04/27/9
#
# Ley No. 7594 of 1923-06-28 specified legal time as Observatory time advanced
# by 44 minutes 51 seconds (UT-03) "from 30 September to 31 March", and by 14
# minutes 51 seconds (UT-03:30) "the rest of the year"; a message from the
# National Council of Administration the same day, published directly below the
# law in the Diario Oficial, specified the first transition to be 1923-09-30
# 24:00.  This effectively established standard time at UT-03:30 with 30
# minutes DST.  Assume transitions at 24:00 on the specified days until Ley No.
# 7919 of 1926-03-05 ended this arrangement, repealing all "laws and other
# provisions which oppose" it, resulting in year-round UT-03:30; a Resolución
# of 1926-03-11 puts the final transition at 1926-03-31 24:00, the same as it
# would have been under the previous law.
# https://www.impo.com.uy/diariooficial/1923/07/02/2
# https://www.impo.com.uy/diariooficial/1926/03/10/2
# https://www.impo.com.uy/diariooficial/1926/03/18/2
#
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Uruguay	1923	1925	-	Oct	 1	 0:00	0:30	-
Rule	Uruguay	1924	1926	-	Apr	 1	 0:00	0	-
# From Tim Parenti (2018-02-15):
# http://www.impo.com.uy/diariooficial/1933/10/27/6
#
# It appears Ley No. 9122 of 1933 was never published as such in the Diario
# Oficial, but instead appeared as Document 26 in the Diario on Friday
# 1933-10-27 as a decree made Monday 1933-10-23 and filed under the Ministry of
# National Defense.  It reinstituted a DST of 30 minutes (to UT-03) "from the
# last Sunday of October...until the last Saturday of March."  In accordance
# with this provision, the first transition was explicitly specified in Article
# 2 of the decree as Saturday 1933-10-28 at 24:00; that is, Sunday 1933-10-29
# at 00:00.  Assume transitions at 00:00 Sunday throughout.
#
# Departing from the matter-of-fact nature of previous timekeeping laws, the
# 1933 decree "consider[s] the advantages of...the advance of legal time":
#
#   "Whereas: The measure adopted by almost all nations at the time of the last
#    World War still persists in North America and Europe, precisely because of
#    the economic, hygienic, and social advantages derived from such an
#    emergency measure...
#
#    Whereas: The advance of the legal time during the summer seasons, by
#    displacing social activity near sunrise, favors the citizen populations
#    and especially the society that creates and works..."
#
# It further specified that "necessary measures" be taken to ensure that
# "public spectacles finish, in general, before [01:00]."
Rule	Uruguay	1933	1938	-	Oct	lastSun	 0:00	0:30	-
Rule	Uruguay	1934	1941	-	Mar	lastSat	24:00	0	-
# From Tim Parenti (2018-02-15):
# Most of the Rules below, and their contemporaneous Zone lines, have been
# updated simply to match the Almanaque 2018.  Although the document does not
# list exact transition times, midnight transitions were already present in our
# data here for all transitions through 2004-09, and this is both consistent
# with prior transitions and verified in several decrees marked below between
# 1939-09 and 2004-09, wherein the relevant text was typically of the form:
#
#   "From 0 hours on [date], the legal time of the entire Republic will be...
#
#    In accordance with [the preceding], on [previous date] at 24 hours, all
#    clocks throughout the Republic will be [advanced/retarded] by..."
#
# It is possible that there is greater specificity to be found for the Rules
# below, but it is buried in no fewer than 40 different decrees individually
# referenced by the Almanaque for the period from 1939-09 to 2014-09.
# Four-fifths of these were promulgated less than two weeks before taking
# effect; more than half within a week and none more than 5 weeks.  Only the
# handful with comments below have been checked with any thoroughness.
Rule	Uruguay	1939	only	-	Oct	 1	 0:00	0:30	-
Rule	Uruguay	1940	only	-	Oct	27	 0:00	0:30	-
# From Tim Parenti (2018-02-15):
# Decreto 1145 of the Ministry of National Defense, dated 1941-07-26, specified
# UT-03 from Friday 1941-08-01 00:00, citing an "urgent...need to save fuel".
# http://www.impo.com.uy/diariooficial/1941/08/04/1
Rule	Uruguay	1941	only	-	Aug	 1	 0:00	0:30	-
# From Tim Parenti (2018-02-15):
# Decreto 1866 of the Ministry of National Defense, dated 1942-12-09, specified
# further advancement (to UT-02:30) from Sunday 1942-12-13 24:00.  Since clocks
# never went back to UT-03:30 thereafter, this is modeled as advancing standard
# time by 30 minutes to UT-03, while retaining 30 minutes of DST.
# http://www.impo.com.uy/diariooficial/1942/12/16/3
Rule	Uruguay	1942	only	-	Dec	14	 0:00	0:30	-
Rule	Uruguay	1943	only	-	Mar	14	 0:00	0	-
Rule	Uruguay	1959	only	-	May	24	 0:00	0:30	-
Rule	Uruguay	1959	only	-	Nov	15	 0:00	0	-
Rule	Uruguay	1960	only	-	Jan	17	 0:00	1:00	-
Rule	Uruguay	1960	only	-	Mar	 6	 0:00	0	-
Rule	Uruguay	1965	only	-	Apr	 4	 0:00	1:00	-
Rule	Uruguay	1965	only	-	Sep	26	 0:00	0	-
# From Tim Parenti (2018-02-15):
# Decreto 321/968 of 1968-05-25, citing emergency drought measures decreed the
# day before, brought clocks forward 30 minutes from Monday 1968-05-27 00:00.
# http://www.impo.com.uy/diariooficial/1968/05/30/5
Rule	Uruguay	1968	only	-	May	27	 0:00	0:30	-
Rule	Uruguay	1968	only	-	Dec	 1	 0:00	0	-
# From Tim Parenti (2018-02-15):
# Decreto 188/970 of 1970-04-23 instituted restrictions on electricity
# consumption "as a consequence of the current rainfall regime in the country".
# Articles 13 and 14 advanced clocks by an hour from Saturday 1970-04-25 00:00.
# http://www.impo.com.uy/diariooficial/1970/04/29/4
Rule	Uruguay	1970	only	-	Apr	25	 0:00	1:00	-
Rule	Uruguay	1970	only	-	Jun	14	 0:00	0	-
Rule	Uruguay	1972	only	-	Apr	23	 0:00	1:00	-
Rule	Uruguay	1972	only	-	Jul	16	 0:00	0	-
# From Tim Parenti (2018-02-15):
# Decreto 29/974 of 1974-01-11, citing "the international rise in the price of
# oil", advanced clocks by 90 minutes (to UT-01:30).  Decreto 163/974 of
# 1974-03-04 returned 60 of those minutes (to UT-02:30), and the remaining 30
# minutes followed in Decreto 679/974 of 1974-08-29.
# http://www.impo.com.uy/diariooficial/1974/01/22/11
# http://www.impo.com.uy/diariooficial/1974/03/14/3
# http://www.impo.com.uy/diariooficial/1974/09/04/6
Rule	Uruguay	1974	only	-	Jan	13	 0:00	1:30	-
Rule	Uruguay	1974	only	-	Mar	10	 0:00	0:30	-
Rule	Uruguay	1974	only	-	Sep	 1	 0:00	0	-
Rule	Uruguay	1974	only	-	Dec	22	 0:00	1:00	-
Rule	Uruguay	1975	only	-	Mar	30	 0:00	0	-
Rule	Uruguay	1976	only	-	Dec	19	 0:00	1:00	-
Rule	Uruguay	1977	only	-	Mar	 6	 0:00	0	-
Rule	Uruguay	1977	only	-	Dec	 4	 0:00	1:00	-
Rule	Uruguay	1978	1979	-	Mar	Sun>=1	 0:00	0	-
Rule	Uruguay	1978	only	-	Dec	17	 0:00	1:00	-
Rule	Uruguay	1979	only	-	Apr	29	 0:00	1:00	-
Rule	Uruguay	1980	only	-	Mar	16	 0:00	0	-
# From Tim Parenti (2018-02-15):
# Decreto 725/987 of 1987-12-04 cited "better use of national tourist
# attractions" to advance clocks one hour from Monday 1987-12-14 00:00.
# http://www.impo.com.uy/diariooficial/1988/01/25/1
Rule	Uruguay	1987	only	-	Dec	14	 0:00	1:00	-
Rule	Uruguay	1988	only	-	Feb	28	 0:00	0	-
Rule	Uruguay	1988	only	-	Dec	11	 0:00	1:00	-
Rule	Uruguay	1989	only	-	Mar	 5	 0:00	0	-
Rule	Uruguay	1989	only	-	Oct	29	 0:00	1:00	-
Rule	Uruguay	1990	only	-	Feb	25	 0:00	0	-
# From Tim Parenti (2018-02-15), per Paul Eggert (1999-11-04):
# IATA agrees as below for 1990-10 through 1993-02.  Per Almanaque 2018, the
# 1992/1993 season appears to be the first in over half a century where DST
# both began and ended pursuant to the same decree.
Rule	Uruguay	1990	1991	-	Oct	Sun>=21	 0:00	1:00	-
Rule	Uruguay	1991	1992	-	Mar	Sun>=1	 0:00	0	-
Rule	Uruguay	1992	only	-	Oct	18	 0:00	1:00	-
Rule	Uruguay	1993	only	-	Feb	28	 0:00	0	-
# From Eduardo Cota (2004-09-20):
# The Uruguayan government has decreed a change in the local time....
# From Tim Parenti (2018-02-15):
# Decreto 328/004 of 2004-09-15.
# http://www.impo.com.uy/diariooficial/2004/09/23/documentos.pdf#page=1
Rule	Uruguay	2004	only	-	Sep	19	 0:00	1:00	-
# From Steffen Thorsen (2005-03-11):
# Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to
# save energy ... it was postponed two weeks....
# From Tim Parenti (2018-02-15):
# This 2005 postponement is not in Almanaque 2018.  Go with the contemporaneous
# reporting, which is confirmed by Decreto 107/005 of 2005-03-10 amending
# Decreto 328/004:
# http://www.impo.com.uy/diariooficial/2005/03/15/documentos.pdf#page=1
# The original decree specified a transition of 2005-03-12 24:00, but the new
# one specified 2005-03-27 02:00.
Rule	Uruguay	2005	only	-	Mar	27	 2:00	0	-
# From Eduardo Cota (2005-09-27):
# ...from 2005-10-09 at 02:00 local time, until 2006-03-12 at 02:00 local time,
# official time in Uruguay will be at GMT -2.
# From Tim Parenti (2018-02-15):
# Decreto 318/005 of 2005-09-19.
# http://www.impo.com.uy/diariooficial/2005/09/23/documentos.pdf#page=1
Rule	Uruguay	2005	only	-	Oct	 9	 2:00	1:00	-
Rule	Uruguay	2006	2015	-	Mar	Sun>=8	 2:00	0	-
# From Tim Parenti (2018-02-15), per Jesper Nørgaard Welen (2006-09-06):
# Decreto 311/006 of 2006-09-04 established regular DST from the first Sunday
# of October at 02:00 through the second Sunday of March at 02:00.  Almanaque
# 2018 appears to have a few typoed dates through this period; ignore them.
# http://www.impo.com.uy/diariooficial/2006/09/08/documentos.pdf#page=1
Rule	Uruguay	2006	2014	-	Oct	Sun>=1	 2:00	1:00	-
# From Steffen Thorsen (2015-06-30):
# ... it looks like they will not be using DST the coming summer:
# http://www.elobservador.com.uy/gobierno-resolvio-que-no-habra-cambio-horario-verano-n656787
# http://www.republica.com.uy/este-ano-no-se-modificara-el-huso-horario-en-uruguay/523760/
# From Paul Eggert (2015-06-30):
# Apparently restaurateurs complained that DST caused people to go to the beach
# instead of out to dinner.
# From Pablo Camargo (2015-07-13):
# http://archivo.presidencia.gub.uy/sci/decretos/2015/06/cons_min_201.pdf
# From Tim Parenti (2018-02-15):
# Decreto 178/015 of 2015-06-29; repeals Decreto 311/006.

# This Zone can be simplified once we assume zic %z.
Zone America/Montevideo	-3:44:51 -	LMT	1908 Jun 10
			-3:44:51 -	MMT	1920 May  1 # Montevideo MT
			-4:00	-	%z	1923 Oct  1
			-3:30	Uruguay	%z	1942 Dec 14
			-3:00	Uruguay	%z	1960
			-3:00	Uruguay	%z	1968
			-3:00	Uruguay	%z	1970
			-3:00	Uruguay	%z	1974
			-3:00	Uruguay	%z	1974 Mar 10
			-3:00	Uruguay	%z	1974 Dec 22
			-3:00	Uruguay	%z

# Venezuela
#
# From Paul Eggert (2015-07-28):
# For the 1965 transition see Gaceta Oficial No. 27.619 (1964-12-15), p 205.533
# http://www.pgr.gob.ve/dmdocuments/1964/27619.pdf
#
# From John Stainforth (2007-11-28):
# ... the change for Venezuela originally expected for 2007-12-31 has
# been brought forward to 2007-12-09.  The official announcement was
# published today in the "Gaceta Oficial de la República Bolivariana
# de Venezuela, número 38.819" (official document for all laws or
# resolution publication)
# http://www.globovision.com/news.php?nid=72208

# From Alexander Krivenyshev (2016-04-15):
# https://actualidad.rt.com/actualidad/204758-venezuela-modificar-huso-horario-sequia-elnino
#
# From Paul Eggert (2016-04-15):
# Clocks advance 30 minutes on 2016-05-01 at 02:30....
# "'Venezuela's new time-zone: hours without light, hours without water,
# hours of presidential broadcasts, hours of lines,' quipped comedian
# Jean Mary Curró ...". See: Cawthorne A, Kai D. Venezuela scraps
# half-hour time difference set by Chavez. Reuters 2016-04-15 14:50 -0400
# https://www.reuters.com/article/us-venezuela-timezone-idUSKCN0XC2BE
#
# From Matt Johnson (2016-04-20):
# ... published in the official Gazette [2016-04-18], here:
# http://historico.tsj.gob.ve/gaceta_ext/abril/1842016/E-1842016-4551.pdf

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	America/Caracas	-4:27:44 -	LMT	1890
			-4:27:40 -	CMT	1912 Feb 12 # Caracas Mean Time?
			-4:30	-	%z	1965 Jan  1  0:00
			-4:00	-	%z	2007 Dec  9  3:00
			-4:30	-	%z	2016 May  1  2:30
			-4:00	-	%z
