#
# 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.
# http://www.jstor.org/stable/1774359
#
# These tables use numeric abbreviations like -03 and -0330 for
# integer hour and minute UTC 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	S
Rule	Arg	1931	only	-	Apr	 1	0:00	0	-
Rule	Arg	1931	only	-	Oct	15	0:00	1:00	S
Rule	Arg	1932	1940	-	Mar	 1	0:00	0	-
Rule	Arg	1932	1939	-	Nov	 1	0:00	1:00	S
Rule	Arg	1940	only	-	Jul	 1	0:00	1:00	S
Rule	Arg	1941	only	-	Jun	15	0:00	0	-
Rule	Arg	1941	only	-	Oct	15	0:00	1:00	S
Rule	Arg	1943	only	-	Aug	 1	0:00	0	-
Rule	Arg	1943	only	-	Oct	15	0:00	1:00	S
Rule	Arg	1946	only	-	Mar	 1	0:00	0	-
Rule	Arg	1946	only	-	Oct	 1	0:00	1:00	S
Rule	Arg	1963	only	-	Oct	 1	0:00	0	-
Rule	Arg	1963	only	-	Dec	15	0:00	1:00	S
Rule	Arg	1964	1966	-	Mar	 1	0:00	0	-
Rule	Arg	1964	1966	-	Oct	15	0:00	1:00	S
Rule	Arg	1967	only	-	Apr	 2	0:00	0	-
Rule	Arg	1967	1968	-	Oct	Sun>=1	0:00	1:00	S
Rule	Arg	1968	1969	-	Apr	Sun>=1	0:00	0	-
Rule	Arg	1974	only	-	Jan	23	0:00	1:00	S
Rule	Arg	1974	only	-	May	 1	0:00	0	-
Rule	Arg	1988	only	-	Dec	 1	0:00	1:00	S
#
# 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	S
#
# 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	S
# 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	S
Rule	Arg	2008	2009	-	Mar	Sun>=15	0:00	0	-
Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	S

# 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 (2014-08-09):
# 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.
#
# 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)
# http://www.lagaceta.com.ar/nota/253414/Economia/Es-inminente-que-en-San-Luis-atrasen-una-hora-los-relojes.html
# http://www.worldtimezone.net/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 (2013-09-05):
# Perhaps San Luis operates on the legal fiction that it is at -04
# with perpetual summer time, but ordinary usage typically seems to
# just say it's at -03; see, for example,
# http://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.

# From Paul Eggert (2013-02-21):
# Milne says Córdoba time was -4:16:48.2.  Round to the nearest second.

# 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	S

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	BOST	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:
# http://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
# http://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.
# http://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:
# http://www.timeanddate.com/news/time/brazil-starts-dst-2013.html

# From Steffen Thorsen (2013-10-17):
# http://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	S
Rule	Brazil	1932	1933	-	Apr	 1	 0:00	0	-
Rule	Brazil	1932	only	-	Oct	 3	 0:00	1:00	S
# 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	S
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	S
# 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	S
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	S
# 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	S
# 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	S
# 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	S
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	S
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	S
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	S
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	S
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	S
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	S
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	S
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	S
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	S
# 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	S
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	S
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	S
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	S
# 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	S
# 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	S
# 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	S
# 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	S
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	S
# 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	max	-	Oct	Sun>=15	0:00	1:00	S
Rule	Brazil	2008	2011	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2012	only	-	Feb	Sun>=22	0:00	0	-
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	-
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 UTC 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 a this official table:
# Cambios en la hora oficial de Chile desde 1900 (retrieved 2008-03-30)
# http://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:
# http://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:
# http://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	S
Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
Rule	Chile	1968	only	-	Nov	 3	4:00u	1:00	S
Rule	Chile	1969	only	-	Mar	30	3:00u	0	-
Rule	Chile	1969	only	-	Nov	23	4:00u	1:00	S
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	S
Rule	Chile	1972	1986	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1973	only	-	Sep	30	4:00u	1:00	S
Rule	Chile	1974	1987	-	Oct	Sun>=9	4:00u	1:00	S
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	S
Rule	Chile	1990	only	-	Sep	16	4:00u	1:00	S
Rule	Chile	1991	1996	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1991	1997	-	Oct	Sun>=9	4:00u	1:00	S
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	S
Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
Rule	Chile	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
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	S
Rule	Chile	2012	2014	-	Apr	Sun>=23	3:00u	0	-
Rule	Chile	2012	2014	-	Sep	Sun>=2	4:00u	1:00	S
Rule	Chile	2016	max	-	May	Sun>=9	3:00u	0	-
Rule	Chile	2016	max	-	Aug	Sun>=9	4:00u	1:00	S
# 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	S
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):
# http://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):
# http://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	S
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 summer time 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	S
Rule	Falk	1938	1942	-	Mar	Sun>=19	0:00	0	-
Rule	Falk	1939	only	-	Oct	1	0:00	1:00	S
Rule	Falk	1940	1942	-	Sep	lastSun	0:00	1:00	S
Rule	Falk	1943	only	-	Jan	1	0:00	0	-
Rule	Falk	1983	only	-	Sep	lastSun	0:00	1:00	S
Rule	Falk	1984	1985	-	Apr	lastSun	0:00	0	-
Rule	Falk	1984	only	-	Sep	16	0:00	1:00	S
Rule	Falk	1985	2000	-	Sep	Sun>=9	0:00	1:00	S
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	S
# 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	S
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	S
Rule	Para	1990	only	-	Oct	 1	0:00	1:00	S
Rule	Para	1991	only	-	Oct	 6	0:00	1:00	S
Rule	Para	1992	only	-	Mar	 1	0:00	0	-
Rule	Para	1992	only	-	Oct	 5	0:00	1:00	S
Rule	Para	1993	only	-	Mar	31	0:00	0	-
Rule	Para	1993	1995	-	Oct	 1	0:00	1:00	S
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	S
# 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	S
#
# 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	S
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	S
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	S
Rule	Peru	1938	only	-	Apr	 1	0:00	0	-
Rule	Peru	1938	1939	-	Sep	lastSun	0:00	1:00	S
Rule	Peru	1939	1940	-	Mar	Sun>=24	0:00	0	-
Rule	Peru	1986	1987	-	Jan	 1	0:00	1:00	S
Rule	Peru	1986	1987	-	Apr	 1	0:00	0	-
Rule	Peru	1990	only	-	Jan	 1	0:00	1:00	S
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	S
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 Shanks & Pottenger:
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
# Whitman gives 1923 Oct 1; go with Shanks & Pottenger.
Rule	Uruguay	1923	only	-	Oct	 2	 0:00	0:30	HS
Rule	Uruguay	1924	1926	-	Apr	 1	 0:00	0	-
Rule	Uruguay	1924	1925	-	Oct	 1	 0:00	0:30	HS
Rule	Uruguay	1933	1935	-	Oct	lastSun	 0:00	0:30	HS
# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman.
Rule	Uruguay	1934	1936	-	Mar	Sat>=25	23:30s	0	-
Rule	Uruguay	1936	only	-	Nov	 1	 0:00	0:30	HS
Rule	Uruguay	1937	1941	-	Mar	lastSun	 0:00	0	-
# Whitman gives 1937 Oct 3; go with Shanks & Pottenger.
Rule	Uruguay	1937	1940	-	Oct	lastSun	 0:00	0:30	HS
# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13,
# and 1943 Apr 13 "to present time"; go with Shanks & Pottenger.
Rule	Uruguay	1941	only	-	Aug	 1	 0:00	0:30	HS
Rule	Uruguay	1942	only	-	Jan	 1	 0:00	0	-
Rule	Uruguay	1942	only	-	Dec	14	 0:00	1:00	S
Rule	Uruguay	1943	only	-	Mar	14	 0:00	0	-
Rule	Uruguay	1959	only	-	May	24	 0:00	1:00	S
Rule	Uruguay	1959	only	-	Nov	15	 0:00	0	-
Rule	Uruguay	1960	only	-	Jan	17	 0:00	1:00	S
Rule	Uruguay	1960	only	-	Mar	 6	 0:00	0	-
Rule	Uruguay	1965	1967	-	Apr	Sun>=1	 0:00	1:00	S
Rule	Uruguay	1965	only	-	Sep	26	 0:00	0	-
Rule	Uruguay	1966	1967	-	Oct	31	 0:00	0	-
Rule	Uruguay	1968	1970	-	May	27	 0:00	0:30	HS
Rule	Uruguay	1968	1970	-	Dec	 2	 0:00	0	-
Rule	Uruguay	1972	only	-	Apr	24	 0:00	1:00	S
Rule	Uruguay	1972	only	-	Aug	15	 0:00	0	-
Rule	Uruguay	1974	only	-	Mar	10	 0:00	0:30	HS
Rule	Uruguay	1974	only	-	Dec	22	 0:00	1:00	S
Rule	Uruguay	1976	only	-	Oct	 1	 0:00	0	-
Rule	Uruguay	1977	only	-	Dec	 4	 0:00	1:00	S
Rule	Uruguay	1978	only	-	Apr	 1	 0:00	0	-
Rule	Uruguay	1979	only	-	Oct	 1	 0:00	1:00	S
Rule	Uruguay	1980	only	-	May	 1	 0:00	0	-
Rule	Uruguay	1987	only	-	Dec	14	 0:00	1:00	S
Rule	Uruguay	1988	only	-	Mar	14	 0:00	0	-
Rule	Uruguay	1988	only	-	Dec	11	 0:00	1:00	S
Rule	Uruguay	1989	only	-	Mar	12	 0:00	0	-
Rule	Uruguay	1989	only	-	Oct	29	 0:00	1:00	S
# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2,
# and that 1992/3's DST was from 10-25 to 03-01.  Go with IATA.
Rule	Uruguay	1990	1992	-	Mar	Sun>=1	 0:00	0	-
Rule	Uruguay	1990	1991	-	Oct	Sun>=21	 0:00	1:00	S
Rule	Uruguay	1992	only	-	Oct	18	 0:00	1:00	S
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....
# http://www.presidencia.gub.uy/decretos/2004091502.htm
Rule	Uruguay	2004	only	-	Sep	19	 0:00	1:00	S
# 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....
# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm
Rule	Uruguay	2005	only	-	Mar	27	 2:00	0	-
# From Eduardo Cota (2005-09-27):
# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF
# This means that 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.
Rule	Uruguay	2005	only	-	Oct	 9	 2:00	1:00	S
Rule	Uruguay	2006	only	-	Mar	12	 2:00	0	-
# From Jesper Nørgaard Welen (2006-09-06):
# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
#
# 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
# [dated 2015-06-29; repeals Decree 311/006 dated 2006-09-04]
Rule	Uruguay	2006	2014	-	Oct	Sun>=1	 2:00	1:00	S
Rule	Uruguay	2007	2015	-	Mar	Sun>=8	 2:00	0	-

# This Zone can be simplified once we assume zic %z.
Zone America/Montevideo	-3:44:44 -	LMT	1898 Jun 28
			-3:44:44 -	MMT	1920 May  1 # Montevideo MT
			-3:30	Uruguay	-0330/-03 1942 Dec 14
			-3:00	Uruguay	-03/-02	1968
			-3:00	Uruguay	-03/-0230 1971
			-3:00	Uruguay	-03/-02	1974
			-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
# http://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
