#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# 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	TYPE	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 time stamps past 2038.

# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
#
# Buenos Aires (BA), Capital Federal (CF),
Zone America/Argentina/Buenos_Aires -3:53:48 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	Arg	-03/-02
#
# 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.
#
Zone America/Argentina/Cordoba -4:16:48 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1991 Mar  3
			-4:00	-	-04	1991 Oct 20
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	Arg	-03/-02
#
# Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN)
Zone America/Argentina/Salta -4:21:40 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1991 Mar  3
			-4:00	-	-04	1991 Oct 20
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	Arg	-03/-02	2008 Oct 18
			-3:00	-	-03
#
# Tucumán (TM)
Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1991 Mar  3
			-4:00	-	-04	1991 Oct 20
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	-	-03	2004 Jun  1
			-4:00	-	-04	2004 Jun 13
			-3:00	Arg	-03/-02
#
# La Rioja (LR)
Zone America/Argentina/La_Rioja -4:27:24 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1991 Mar  1
			-4:00	-	-04	1991 May  7
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	-	-03	2004 Jun  1
			-4:00	-	-04	2004 Jun 20
			-3:00	Arg	-03/-02	2008 Oct 18
			-3:00	-	-03
#
# San Juan (SJ)
Zone America/Argentina/San_Juan -4:34:04 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1991 Mar  1
			-4:00	-	-04	1991 May  7
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	-	-03	2004 May 31
			-4:00	-	-04	2004 Jul 25
			-3:00	Arg	-03/-02	2008 Oct 18
			-3:00	-	-03
#
# Jujuy (JY)
Zone America/Argentina/Jujuy -4:21:12 -	LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1990 Mar  4
			-4:00	-	-04	1990 Oct 28
			-4:00	1:00	-03	1991 Mar 17
			-4:00	-	-04	1991 Oct  6
			-3:00	1:00	-02	1992
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	Arg	-03/-02	2008 Oct 18
			-3:00	-	-03
#
# Catamarca (CT), Chubut (CH)
Zone America/Argentina/Catamarca -4:23:08 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1991 Mar  3
			-4:00	-	-04	1991 Oct 20
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	-	-03	2004 Jun  1
			-4:00	-	-04	2004 Jun 20
			-3:00	Arg	-03/-02	2008 Oct 18
			-3:00	-	-03
#
# Mendoza (MZ)
Zone America/Argentina/Mendoza -4:35:16 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1990 Mar  4
			-4:00	-	-04	1990 Oct 15
			-4:00	1:00	-03	1991 Mar  1
			-4:00	-	-04	1991 Oct 15
			-4:00	1:00	-03	1992 Mar  1
			-4:00	-	-04	1992 Oct 18
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	-	-03	2004 May 23
			-4:00	-	-04	2004 Sep 26
			-3:00	Arg	-03/-02	2008 Oct 18
			-3:00	-	-03
#
# 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
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1990
			-3:00	1:00	-02	1990 Mar 14
			-4:00	-	-04	1990 Oct 15
			-4:00	1:00	-03	1991 Mar  1
			-4:00	-	-04	1991 Jun  1
			-3:00	-	-03	1999 Oct  3
			-4:00	1:00	-03	2000 Mar  3
			-3:00	-	-03	2004 May 31
			-4:00	-	-04	2004 Jul 25
			-3:00	Arg	-03/-02	2008 Jan 21
			-4:00	SanLuis	-04/-03	2009 Oct 11
			-3:00	-	-03
#
# Santa Cruz (SC)
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	-	-03	2004 Jun  1
			-4:00	-	-04	2004 Jun 20
			-3:00	Arg	-03/-02	2008 Oct 18
			-3:00	-	-03
#
# Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF)
Zone America/Argentina/Ushuaia -4:33:12 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	-04	1930 Dec
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1999 Oct  3
			-4:00	Arg	-04/-03	2000 Mar  3
			-3:00	-	-03	2004 May 30
			-4:00	-	-04	2004 Jun 20
			-3:00	Arg	-03/-02	2008 Oct 18
			-3:00	-	-03

# Aruba
Link America/Curacao America/Aruba

# Bolivia
# Zone	NAME		GMTOFF	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	-	-04

# 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 eletronic 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	TYPE	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	2022	-	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, and it will stay like that for the years after.
# ... 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
Rule	Brazil	2018	max	-	Nov	Sun>=1	0:00	1:00	-
Rule	Brazil	2023	only	-	Feb	Sun>=22	0:00	0	-
Rule	Brazil	2024	2025	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2026	only	-	Feb	Sun>=22	0:00	0	-
Rule	Brazil	2027	2033	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2034	only	-	Feb	Sun>=22	0:00	0	-
Rule	Brazil	2035	2036	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2037	only	-	Feb	Sun>=22	0:00	0	-
# From Arthur David Olson (2008-09-29):
# The next is wrong in some years but is better than nothing.
Rule	Brazil	2038	max	-	Feb	Sun>=15	0:00	0	-

# The latest ruleset listed above says that the following states observe DST:
# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.

# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
#
# Fernando de Noronha (administratively part of PE)
Zone America/Noronha	-2:09:40 -	LMT	1914
			-2:00	Brazil	-02/-01	1990 Sep 17
			-2:00	-	-02	1999 Sep 30
			-2:00	Brazil	-02/-01	2000 Oct 15
			-2:00	-	-02	2001 Sep 13
			-2:00	Brazil	-02/-01	2002 Oct  1
			-2:00	-	-02
# 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	-03/-02	1988 Sep 12
			-3:00	-	-03
#
# west Pará (PA)
# West Pará includes Altamira, Óbidos, Prainha, Oriximiná, and Santarém.
Zone America/Santarem	-3:38:48 -	LMT	1914
			-4:00	Brazil	-04/-03	1988 Sep 12
			-4:00	-	-04	2008 Jun 24  0:00
			-3:00	-	-03
#
# 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	-03/-02	1990 Sep 17
			-3:00	-	-03	1999 Sep 30
			-3:00	Brazil	-03/-02	2000 Oct 22
			-3:00	-	-03	2001 Sep 13
			-3:00	Brazil	-03/-02	2002 Oct  1
			-3:00	-	-03
#
# Pernambuco (PE) (except Atlantic islands)
Zone America/Recife	-2:19:36 -	LMT	1914
			-3:00	Brazil	-03/-02	1990 Sep 17
			-3:00	-	-03	1999 Sep 30
			-3:00	Brazil	-03/-02	2000 Oct 15
			-3:00	-	-03	2001 Sep 13
			-3:00	Brazil	-03/-02	2002 Oct  1
			-3:00	-	-03
#
# Tocantins (TO)
Zone America/Araguaina	-3:12:48 -	LMT	1914
			-3:00	Brazil	-03/-02	1990 Sep 17
			-3:00	-	-03	1995 Sep 14
			-3:00	Brazil	-03/-02	2003 Sep 24
			-3:00	-	-03	2012 Oct 21
			-3:00	Brazil	-03/-02	2013 Sep
			-3:00	-	-03
#
# Alagoas (AL), Sergipe (SE)
Zone America/Maceio	-2:22:52 -	LMT	1914
			-3:00	Brazil	-03/-02	1990 Sep 17
			-3:00	-	-03	1995 Oct 13
			-3:00	Brazil	-03/-02	1996 Sep  4
			-3:00	-	-03	1999 Sep 30
			-3:00	Brazil	-03/-02	2000 Oct 22
			-3:00	-	-03	2001 Sep 13
			-3:00	Brazil	-03/-02	2002 Oct  1
			-3:00	-	-03
#
# 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	-03/-02	2003 Sep 24
			-3:00	-	-03	2011 Oct 16
			-3:00	Brazil	-03/-02	2012 Oct 21
			-3:00	-	-03
#
# 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	-03/-02	1963 Oct 23  0:00
			-3:00	1:00	-02	1964
			-3:00	Brazil	-03/-02
#
# Mato Grosso do Sul (MS)
Zone America/Campo_Grande -3:38:28 -	LMT	1914
			-4:00	Brazil	-04/-03
#
# Mato Grosso (MT)
Zone America/Cuiaba	-3:44:20 -	LMT	1914
			-4:00	Brazil	-04/-03	2003 Sep 24
			-4:00	-	-04	2004 Oct  1
			-4:00	Brazil	-04/-03
#
# Rondônia (RO)
Zone America/Porto_Velho -4:15:36 -	LMT	1914
			-4:00	Brazil	-04/-03	1988 Sep 12
			-4:00	-	-04
#
# Roraima (RR)
Zone America/Boa_Vista	-4:02:40 -	LMT	1914
			-4:00	Brazil	-04/-03	1988 Sep 12
			-4:00	-	-04	1999 Sep 30
			-4:00	Brazil	-04/-03	2000 Oct 15
			-4:00	-	-04
#
# 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	-04/-03	1988 Sep 12
			-4:00	-	-04	1993 Sep 28
			-4:00	Brazil	-04/-03	1994 Sep 22
			-4:00	-	-04
#
# 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	-05/-04	1988 Sep 12
			-5:00	-	-05	1993 Sep 28
			-5:00	Brazil	-05/-04	1994 Sep 22
			-5:00	-	-05	2008 Jun 24  0:00
			-4:00	-	-04	2013 Nov 10
			-5:00	-	-05
#
# Acre (AC)
Zone America/Rio_Branco	-4:31:12 -	LMT	1914
			-5:00	Brazil	-05/-04	1988 Sep 12
			-5:00	-	-05	2008 Jun 24  0:00
			-4:00	-	-04	2013 Nov 10
			-5:00	-	-05

# Chile

# From Paul Eggert (2015-04-03):
# 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.html
# 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 [2], rounding it to -4:42:46.
#
#  - [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 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 Paul Eggert (2017-01-19):
# The above says the Magallanes change expires 2019-05-11 at 24:00,
# so in theory, they will revert to -04/-03 after that, which means
# they will switch from -03 to -04 one hour after Santiago does that day.
# For now, assume that they will not revert.

# Rule	NAME	FROM	TO	TYPE	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	max	-	May	Sun>=9	3:00u	0	-
Rule	Chile	2016	max	-	Aug	Sun>=9	4:00u	1:00	-
# IATA SSIM anomalies: (1992-02) says 1992-03-14;
# (1996-09) says 1998-03-08.  Ignore these.
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Santiago	-4:42:46 -	LMT	1890
			-4:42:46 -	SMT	1910 Jan 10 # Santiago Mean Time
			-5:00	-	-05	1916 Jul  1
			-4:42:46 -	SMT	1918 Sep 10
			-4:00	-	-04	1919 Jul  1
			-4:42:46 -	SMT	1927 Sep  1
			-5:00	Chile	-05/-04	1932 Sep  1
			-4:00	-	-04	1942 Jun  1
			-5:00	-	-05	1942 Aug  1
			-4:00	-	-04	1946 Jul 15
			-4:00	1:00	-03	1946 Sep  1 # central Chile
			-4:00	-	-04	1947 Apr  1
			-5:00	-	-05	1947 May 21 23:00
			-4:00	Chile	-04/-03
Zone America/Punta_Arenas -4:43:40 -	LMT	1890
			-4:42:46 -	SMT	1910 Jan 10
			-5:00	-	-05	1916 Jul  1
			-4:42:46 -	SMT	1918 Sep 10
			-4:00	-	-04	1919 Jul  1
			-4:42:46 -	SMT	1927 Sep  1
			-5:00	Chile	-05/-04	1932 Sep  1
			-4:00	-	-04	1942 Jun  1
			-5:00	-	-05	1942 Aug  1
			-4:00	-	-04	1947 Apr  1
			-5:00	-	-05	1947 May 21 23:00
			-4:00	Chile	-04/-03	2016 Dec  4
			-3:00	-	-03
Zone Pacific/Easter	-7:17:28 -	LMT	1890
			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
			-7:00	Chile	-07/-06	1982 Mar 14 3:00u # Easter Time
			-6:00	Chile	-06/-05
#
# 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		GMTOFF	RULES	FORMAT	[UNTIL]
Zone Antarctica/Palmer	0	-	-00	1965
			-4:00	Arg	-04/-03	1969 Oct  5
			-3:00	Arg	-03/-02	1982 May
			-4:00	Chile	-04/-03	2016 Dec  4
			-3:00	-	-03

# Colombia

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

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

# Curaçao

# Milne gives 4:35:46.9 for Curaçao mean time; round to nearest.
#
# From Paul Eggert (2006-03-22):
# Shanks & Pottenger say that The Bottom and Philipsburg have been at
# -4:00 since standard time was introduced on 1912-03-02; and that
# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
# 1912-02-02 to 1965-01-01.  The former is dubious, since S&P also say
# Saba Island has been like Curaçao.
# This all predates our 1970 cutoff, though.
#
# By July 2007 Curaçao and St Maarten are planned to become
# associated states within the Netherlands, much like Aruba;
# Bonaire, Saba and St Eustatius would become directly part of the
# Netherlands as Kingdom Islands.  This won't affect their time zones
# though, as far as we know.
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Curacao	-4:35:47 -	LMT	1912 Feb 12 # Willemstad
			-4:30	-	-0430	1965
			-4:00	-	AST

# From Arthur David Olson (2011-06-15):
# use links for places with new iso3166 codes.
# The name "Lower Prince's Quarter" is both longer than fourteen characters
# and contains an apostrophe; use "Lower_Princes" below.

Link	America/Curacao	America/Lower_Princes	# Sint Maarten
Link	America/Curacao	America/Kralendijk	# Caribbean Netherlands

# 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	TYPE	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		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Guayaquil	-5:19:20 -	LMT	1890
			-5:14:00 -	QMT	1931 # Quito Mean Time
			-5:00	Ecuador	-05/-04
Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
			-5:00	-	-05	1986
			-6:00	Ecuador	-06/-05

# 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	TYPE	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		GMTOFF	RULES	FORMAT	[UNTIL]
Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
			-3:51:24 -	SMT	1912 Mar 12 # Stanley Mean Time
			-4:00	Falk	-04/-03	1983 May
			-3:00	Falk	-03/-02	1985 Sep 15
			-4:00	Falk	-04/-03	2010 Sep  5  2:00
			-3:00	-	-03

# French Guiana
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Cayenne	-3:29:20 -	LMT	1911 Jul
			-4:00	-	-04	1967 Oct
			-3:00	-	-03

# Guyana
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar    # Georgetown
			-3:45	-	-0345	1975 Jul 31
			-3:00	-	-03	1991
# IATA SSIM (1996-06) says -4:00.  Assume a 1991 switch.
			-4:00	-	-04

# 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	TYPE	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
Rule	Para	2013	max	-	Mar	Sun>=22	0:00	0	-

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

# 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	TYPE	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		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Lima	-5:08:12 -	LMT	1890
			-5:08:36 -	LMT	1908 Jul 28 # Lima Mean Time?
			-5:00	Peru	-05/-04

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

# South Sandwich Is
# uninhabited; scientific personnel have wintered

# Suriname
# Zone	NAME		GMTOFF	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	-	-0330	1984 Oct
			-3:00	-	-03

# Trinidad and Tobago
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Port_of_Spain -4:06:04 -	LMT	1912 Mar 2
			-4:00	-	AST

# These all agree with Trinidad and Tobago since 1970.
Link America/Port_of_Spain America/Anguilla
Link America/Port_of_Spain America/Antigua
Link America/Port_of_Spain America/Dominica
Link America/Port_of_Spain America/Grenada
Link America/Port_of_Spain America/Guadeloupe
Link America/Port_of_Spain America/Marigot	# St Martin (French part)
Link America/Port_of_Spain America/Montserrat
Link America/Port_of_Spain America/St_Barthelemy # St Barthélemy
Link America/Port_of_Spain America/St_Kitts	# St Kitts & Nevis
Link America/Port_of_Spain America/St_Lucia
Link America/Port_of_Spain America/St_Thomas	# Virgin Islands (US)
Link America/Port_of_Spain America/St_Vincent
Link America/Port_of_Spain America/Tortola	# Virgin Islands (UK)

# 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	TYPE	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	-	-04	1923 Oct  1
			-3:30	Uruguay	-0330/-03 1942 Dec 14
			-3:00	Uruguay	-03/-0230 1960
			-3:00	Uruguay	-03/-02	1968
			-3:00	Uruguay	-03/-0230 1970
			-3:00	Uruguay	-03/-02	1974
			-3:00	Uruguay	-03/-0130 1974 Mar 10
			-3:00	Uruguay	-03/-0230 1974 Dec 22
			-3:00	Uruguay	-03/-02

# 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		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Caracas	-4:27:44 -	LMT	1890
			-4:27:40 -	CMT	1912 Feb 12 # Caracas Mean Time?
			-4:30	-	-0430	1965 Jan  1  0:00
			-4:00	-	-04	2007 Dec  9  3:00
			-4:30	-	-0430	2016 May  1  2:30
			-4:00	-	-04
