#
# 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.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# <pre>

# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
# tz@elsie.nci.nih.gov for general use in the future).

# From Paul Eggert (2006-03-22):
# A good source for time zone historical data outside the U.S. is
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
# San Diego: ACS Publications, Inc. (2003).
#
# Gwillim Law writes that a good source
# for recent time zone data is 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, Shanks & Pottenger is the source for
# entries through 1990, and IATA SSIM is the source for entries afterwards.
#
# Earlier editions of these tables used the North American style (e.g. ARST and
# ARDT for Argentine Standard and Daylight Time), but the following quote
# suggests that it's better to use European style (e.g. ART and ARST).
#	I suggest the use of _Summer time_ instead of the more cumbersome
#	_daylight-saving time_.  _Summer time_ seems to be in general use
#	in Europe and South America.
#	-- E O Cutler, _New York Times_ (1937-02-14), quoted in
#	H L Mencken, _The American Language: Supplement I_ (1960), p 466
#
# Earlier editions of these tables also used the North American style
# for time zones in Brazil, but this was incorrect, as Brazilians say
# "summer time".  Reinaldo Goulart, a Sao Paulo businessman active in
# the railroad sector, writes (1999-07-06):
#	The subject of time zones is currently a matter of discussion/debate in
#	Brazil.  Let's say that "the Brasilia time" is considered the
#	"official time" because Brasilia is the capital city.
#	The other three time zones are called "Brasilia time "minus one" or
#	"plus one" or "plus two".  As far as I know there is no such
#	name/designation as "Eastern Time" or "Central Time".
# So I invented the following (English-language) abbreviations for now.
# Corrections are welcome!
#		std	dst
#	-2:00	FNT	FNST	Fernando de Noronha
#	-3:00	BRT	BRST	Brasilia
#	-4:00	AMT	AMST	Amazon
#	-5:00	ACT	ACST	Acre

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

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

# 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-199):
# 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 Hidrografia 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
Rule	Arg	2000	only	-	Mar	Sun>=1	0:00	0	-
#
# From Peter Gradelski via Steffen Thorsen (2000-03-01):
# We just checked with our Sao 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 Fabian L. Arce Jofre (2000-04-04):
# The law that claimed DST for Argentina was derogated by President Fernando
# de la Rua 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 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 (2006-03-22):
# <a href="http://www.spicasc.net/horvera.html">
# Hora de verano para la Republica Argentina (2003-06-08)
# </a> 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, Tucuman.
#
# From Mariano Absatz (2004-06-14):
# ... this weekend, the Province of Tucuman 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

# Unless otherwise specified, data 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, but we
# haven't verified this yet so for now we'll keep it a single region.
#
# 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 # Cordoba Mean Time
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART
#
# Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC),
# Formosa (FM), Salta (SA), Santiago del Estero (SE), Cordoba (CB),
# San Luis (SL), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
#
# 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.
# - San Luis switched to -4:00 on 1990-03-14, then to -3:00 on 1990-10-15,
#   then to -4:00 on 1991-03-01, then to -3:00 on 1991-06-01.
# - 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	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  3
			-4:00	-	WART	1991 Oct 20
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART
#
# Tucuman (TM)
Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  3
			-4:00	-	WART	1991 Oct 20
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 Jun  1
			-4:00	-	WART	2004 Jun 13
			-3:00	-	ART
#
# La Rioja (LR)
Zone America/Argentina/La_Rioja -4:27:24 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  1
			-4:00	-	WART	1991 May  7
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 Jun  1
			-4:00	-	WART	2004 Jun 20
			-3:00	-	ART
#
# San Juan (SJ)
Zone America/Argentina/San_Juan -4:34:04 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  1
			-4:00	-	WART	1991 May  7
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 May 31
			-4:00	-	WART	2004 Jul 25
			-3:00	-	ART
#
# Jujuy (JY)
Zone America/Argentina/Jujuy -4:21:12 -	LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1990 Mar  4
			-4:00	-	WART	1990 Oct 28
			-4:00	1:00	WARST	1991 Mar 17
			-4:00	-	WART	1991 Oct  6
			-3:00	1:00	ARST	1992
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART
#
# Catamarca (CT), Chubut (CH)
Zone America/Argentina/Catamarca -4:23:08 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  3
			-4:00	-	WART	1991 Oct 20
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 Jun  1
			-4:00	-	WART	2004 Jun 20
			-3:00	-	ART
#
# Mendoza (MZ)
Zone America/Argentina/Mendoza -4:35:16 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1990 Mar  4
			-4:00	-	WART	1990 Oct 15
			-4:00	1:00	WARST	1991 Mar  1
			-4:00	-	WART	1991 Oct 15
			-4:00	1:00	WARST	1992 Mar  1
			-4:00	-	WART	1992 Oct 18
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 May 23
			-4:00	-	WART	2004 Sep 26
			-3:00	-	ART
#
# Santa Cruz (SC)
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 Jun  1
			-4:00	-	WART	2004 Jun 20
			-3:00	-	ART
#
# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)
Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 May 30
			-4:00	-	WART	2004 Jun 20
			-3:00	-	ART

# Aruba
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Aruba	-4:40:24 -	LMT	1912 Feb 12	# Oranjestad
			-4:30	-	ANT	1965 # Netherlands Antilles Time
			-4:00	-	AST

# 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	-	BOT	# Bolivia Time

# 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), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),
# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (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 Goias 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 Amapa (AP), Ceara (CE),
# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do
# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.

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

# From Jesper Norgaard (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 Eggert (2002-10-10):
# The official decrees referenced below are mostly taken from
# <a href="http://pcdsh01.on.br/DecHV.html">
# Decretos sobre o Horario de Verao no Brasil
# </a>.

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
# Decree <a href="http://pcdsh01.on.br/HV20466.htm">20,466</a> (1931-10-01)
# Decree <a href="http://pcdsh01.on.br/HV21896.htm">21,896</a> (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 <a href="http://pcdsh01.on.br/HV23195.htm">23,195</a> (1933-10-10)
# revoked DST.
# Decree <a href="http://pcdsh01.on.br/HV27496.htm">27,496</a> (1949-11-24)
# Decree <a href="http://pcdsh01.on.br/HV27998.htm">27,998</a> (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 <a href="http://pcdsh01.on.br/HV32308.htm">32,308</a> (1953-02-24)
Rule	Brazil	1953	only	-	Mar	 1	 0:00	0	-
# Decree <a href="http://pcdsh01.on.br/HV34724.htm">34,724</a> (1953-11-30)
# revoked DST.
# Decree <a href="http://pcdsh01.on.br/HV52700.htm">52,700</a> (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 <a href="http://pcdsh01.on.br/HV53071.htm">53,071</a> (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 <a href="http://pcdsh01.on.br/HV53604.htm">53,604</a> (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 <a href="http://pcdsh01.on.br/HV55639.htm">55,639</a> (1965-01-27)
Rule	Brazil	1965	only	-	Jan	31	 0:00	1:00	S
Rule	Brazil	1965	only	-	Mar	31	 0:00	0	-
# Decree <a href="http://pcdsh01.on.br/HV57303.htm">57,303</a> (1965-11-22)
Rule	Brazil	1965	only	-	Dec	 1	 0:00	1:00	S
# Decree <a href="http://pcdsh01.on.br/HV57843.htm">57,843</a> (1966-02-18)
Rule	Brazil	1966	1968	-	Mar	 1	 0:00	0	-
Rule	Brazil	1966	1967	-	Nov	 1	 0:00	1:00	S
# Decree <a href="http://pcdsh01.on.br/HV63429.htm">63,429</a> (1968-10-15)
# revoked DST.
# Decree <a href="http://pcdsh01.on.br/HV91698.htm">91,698</a> (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 <a href="http://pcdsh01.on.br/HV94922.htm">94,922</a> (1987-09-22)
Rule	Brazil	1987	only	-	Oct	25	 0:00	1:00	S
Rule	Brazil	1988	only	-	Feb	 7	 0:00	0	-
# Decree <a href="http://pcdsh01.on.br/HV96676.htm">96,676</a> (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 <a href="http://pcdsh01.on.br/HV98077.htm">98,077</a> (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 <a href="http://pcdsh01.on.br/HV99530.htm">99,530</a> (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	-
# <a href="http://pcdsh01.on.br/HV1991.htm">Unnumbered decree</a> (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	-
# <a href="http://pcdsh01.on.br/HV1992.htm">Unnumbered decree</a> (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 <a href="http://pcdsh01.on.br/HV942.htm">942</a> (1993-09-28)
# adopted by same states, plus AM.
# Decree <a href="http://pcdsh01.on.br/HV1252.htm">1,252</a> (1994-09-22;
# web page corrected 2004-01-07) adopted by same states, minus AM.
# Decree <a href="http://pcdsh01.on.br/HV1636.htm">1,636</a> (1995-09-14)
# adopted by same states, plus MT and TO.
# Decree <a href="http://pcdsh01.on.br/HV1674.htm">1,674</a> (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 <a href="http://pcdsh01.on.br/HV2000.htm">2,000</a> (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 <a href="http://pcdsh01.on.br/figuras/HV2495.JPG">2,495</a>
# (1998-02-10)
Rule	Brazil	1998	only	-	Mar	 1	 0:00	0	-
# Decree <a href="http://pcdsh01.on.br/figuras/Hv98.jpg">2,780</a> (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 <a href="http://pcdsh01.on.br/figuras/HV3150.gif">3,150</a>
# (1999-08-23) adopted by same states.
# Decree <a href="http://pcdsh01.on.br/DecHV99.gif">3,188</a> (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 <a href="http://pcdsh01.on.br/DEC3592.htm">3,592</a> (2000-09-06)
# adopted by the same states as before.
# Decree <a href="http://pcdsh01.on.br/Dec3630.jpg">3,630</a> (2000-10-13)
# repeals DST in PE and RR, effective 2000-10-15 00:00.
# Decree <a href="http://pcdsh01.on.br/Dec3632.jpg">3,632</a> (2000-10-17)
# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
# Decree <a href="http://pcdsh01.on.br/figuras/HV3916.gif">3,916</a>
# (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.
# <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2002/D4399.htm"></a>
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.
# <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2003/D4844.htm"></a>
Rule	Brazil	2003	only	-	Oct	19	 0:00	1:00	S
# Decree 5,223 (2004-10-01) reestablishes DST in MT.
# <a href="http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2004/Decreto/D5223.htm"></a>
Rule	Brazil	2004	only	-	Nov	 2	 0:00	1:00	S
# Decree <a href="http://pcdsh01.on.br/DecHV5539.gif">5,539</a> (2005-09-19),
# adopted by the same states as before.
Rule	Brazil	2005	only	-	Oct	16	 0:00	1:00	S
# Decree <a href="http://pcdsh01.on.br/DecHV5920.gif">5,920</a> (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 number not yet known)
# http://www.brasil.gov.br/noticias/ultimas_noticias/horario_verao070920/
# (2007-09-20) after a heads-up from Steffen Thorsen:
Rule	Brazil	2007	max	-	Oct	Sun>=8	 0:00	1:00	S
Rule	Brazil	2008	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.
# For dates after mid-2008, the above rules with TO="max" are guesses
# and are quite possibly wrong, but are more likely than no DST at all.


# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
#
# Fernando de Noronha (administratively part of PE)
Zone America/Noronha	-2:09:40 -	LMT	1914
			-2:00	Brazil	FN%sT	1990 Sep 17
			-2:00	-	FNT	1999 Sep 30
			-2:00	Brazil	FN%sT	2000 Oct 15
			-2:00	-	FNT	2001 Sep 13
			-2:00	Brazil	FN%sT	2002 Oct  1
			-2:00	-	FNT
# Other Atlantic islands have no permanent settlement.
# These include Trindade and Martin Vaz (administratively part of ES),
# Atol das Rocas (RN), and Penedos de Sao Pedro e Sao Paulo (PE).
# Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
# it also included the Penedos.
#
# Amapa (AP), east Para (PA)
# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.
# The division between east and west Para is the river Xingu.
# In the north a very small part from the river Javary (now Jari I guess,
# the border with Amapa) to the Amazon, then to the Xingu.
Zone America/Belem	-3:13:56 -	LMT	1914
			-3:00	Brazil	BR%sT	1988 Sep 12
			-3:00	-	BRT
#
# Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),
# Paraiba (PB)
Zone America/Fortaleza	-2:34:00 -	LMT	1914
			-3:00	Brazil	BR%sT	1990 Sep 17
			-3:00	-	BRT	1999 Sep 30
			-3:00	Brazil	BR%sT	2000 Oct 22
			-3:00	-	BRT	2001 Sep 13
			-3:00	Brazil	BR%sT	2002 Oct  1
			-3:00	-	BRT
#
# Pernambuco (PE) (except Atlantic islands)
Zone America/Recife	-2:19:36 -	LMT	1914
			-3:00	Brazil	BR%sT	1990 Sep 17
			-3:00	-	BRT	1999 Sep 30
			-3:00	Brazil	BR%sT	2000 Oct 15
			-3:00	-	BRT	2001 Sep 13
			-3:00	Brazil	BR%sT	2002 Oct  1
			-3:00	-	BRT
#
# Tocantins (TO)
Zone America/Araguaina	-3:12:48 -	LMT	1914
			-3:00	Brazil	BR%sT	1990 Sep 17
			-3:00	-	BRT	1995 Sep 14
			-3:00	Brazil	BR%sT	2003 Sep 24
			-3:00	-	BRT
#
# Alagoas (AL), Sergipe (SE)
Zone America/Maceio	-2:22:52 -	LMT	1914
			-3:00	Brazil	BR%sT	1990 Sep 17
			-3:00	-	BRT	1995 Oct 13
			-3:00	Brazil	BR%sT	1996 Sep  4
			-3:00	-	BRT	1999 Sep 30
			-3:00	Brazil	BR%sT	2000 Oct 22
			-3:00	-	BRT	2001 Sep 13
			-3:00	Brazil	BR%sT	2002 Oct  1
			-3:00	-	BRT
#
# 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	BR%sT	2003 Sep 24
			-3:00	-	BRT
#
# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
# Santa Catarina (SC), Rio Grande do Sul (RS)
Zone America/Sao_Paulo	-3:06:28 -	LMT	1914
			-3:00	Brazil	BR%sT	1963 Oct 23 00:00
			-3:00	1:00	BRST	1964
			-3:00	Brazil	BR%sT
#
# Mato Grosso do Sul (MS)
Zone America/Campo_Grande -3:38:28 -	LMT	1914
			-4:00	Brazil	AM%sT
#
# Mato Grosso (MT)
Zone America/Cuiaba	-3:44:20 -	LMT	1914
			-4:00	Brazil	AM%sT	2003 Sep 24
			-4:00	-	AMT	2004 Oct  1
			-4:00	Brazil	AM%sT
#
# west Para (PA), Rondonia (RO)
# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
Zone America/Porto_Velho -4:15:36 -	LMT	1914
			-4:00	Brazil	AM%sT	1988 Sep 12
			-4:00	-	AMT
#
# Roraima (RR)
Zone America/Boa_Vista	-4:02:40 -	LMT	1914
			-4:00	Brazil	AM%sT	1988 Sep 12
			-4:00	-	AMT	1999 Sep 30
			-4:00	Brazil	AM%sT	2000 Oct 15
			-4:00	-	AMT
#
# east Amazonas (AM): Boca do Acre, Jutai, 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	AM%sT	1988 Sep 12
			-4:00	-	AMT	1993 Sep 28
			-4:00	Brazil	AM%sT	1994 Sep 22
			-4:00	-	AMT
#
# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
#	Eirunepe, Envira, Ipixuna
Zone America/Eirunepe	-4:39:28 -	LMT	1914
			-5:00	Brazil	AC%sT	1988 Sep 12
			-5:00	-	ACT	1993 Sep 28
			-5:00	Brazil	AC%sT	1994 Sep 22
			-5:00	-	ACT
#
# Acre (AC)
Zone America/Rio_Branco	-4:31:12 -	LMT	1914
			-5:00	Brazil	AC%sT	1988 Sep 12
			-5:00	-	ACT


# Chile

# 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 Oscar van Vlijmen (2006-10-08):
# http://www.horaoficial.cl/cambio.htm

# From Jesper Norgaard Welen (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.

# From Paul Eggert (2006-12-27):
# The following data for Chile and America/Santiago are from
# <http://www.horaoficial.cl/horaof.htm> (2006-09-20), transcribed by
# Jesper Norgaard Welen.  The data for Pacific/Easter are from Shanks
# & Pottenger, except with DST transitions after 1932 cloned from
# America/Santiago.  The pre-1980 Pacific/Easter data are dubious,
# but we have no other source.

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
Rule	Chile	1942	only	-	Jun	 1	4:00u	0	-
Rule	Chile	1942	only	-	Aug	 1	5:00u	1:00	S
Rule	Chile	1946	only	-	Jul	15	4:00u	1:00	S
Rule	Chile	1946	only	-	Sep	 1	3:00u	0:00	-
Rule	Chile	1947	only	-	Apr	 1	4:00u	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	1989	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1988	only	-	Oct	Sun>=1	4:00u	1:00	S
Rule	Chile	1989	only	-	Oct	Sun>=9	4:00u	1:00	S
Rule	Chile	1990	only	-	Mar	18	3:00u	0	-
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	max	-	Oct	Sun>=9	4:00u	1:00	S
Rule	Chile	2000	max	-	Mar	Sun>=9	3:00u	0	-
# 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 	    # Santiago Mean Time
			-5:00	-	CLT	1916 Jul  1 # Chile Time
			-4:42:46 -	SMT	1918 Sep  1 # Santiago Mean Time
			-4:00	-	CLT	1919 Jul  1 # Chile Time
			-4:42:46 -	SMT	1927 Sep  1 # Santiago Mean Time
			-5:00	Chile	CL%sT	1947 May 22 # Chile Time
			-4:00	Chile	CL%sT
Zone Pacific/Easter	-7:17:44 -	LMT	1890
			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
			-7:00	Chile	EAS%sT	1982 Mar 13 21:00 # Easter I Time
			-6:00	Chile	EAS%sT
#
# Sala y Gomez Island is like Pacific/Easter.
# Other Chilean locations, including Juan Fernandez Is, San Ambrosio,
# San Felix, and Antarctic bases, are like America/Santiago.

# Colombia
# 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:20 -	LMT	1884 Mar 13
			-4:56:20 -	BMT	1914 Nov 23 # Bogota Mean Time
			-5:00	CO	CO%sT	# Colombia Time
# Malpelo, Providencia, San Andres
# no information; probably like America/Bogota

# Curacao
#
# 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 Curacao.
# This all predates our 1970 cutoff, though.
#
# By July 2007 Curacao 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:44 -	LMT	1912 Feb 12	# Willemstad
			-4:30	-	ANT	1965 # Netherlands Antilles Time
			-4:00	-	AST

# Ecuador
#
# From Paul Eggert (2007-03-04):
# Apparently Ecuador had a failed experiment with DST in 1992.
# <http://midena.gov.ec/content/view/1261/208/> (2007-02-27) and
# <http://www.hoy.com.ec/NoticiaNue.asp?row_id=249856> (2006-11-06) both
# talk about "hora Sixto".  Leave this alone for now, as we have no data.
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Guayaquil	-5:19:20 -	LMT	1890
			-5:14:00 -	QMT	1931 # Quito Mean Time
			-5:00	-	ECT	     # Ecuador Time
Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
			-5:00	-	ECT	1986
			-6:00	-	GALT	     # Galapagos Time

# 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 Norgaard:
# ... 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.

# 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	max	-	Apr	Sun>=15	2:00	0	-
Rule	Falk	2001	max	-	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	FK%sT	1983 May     # Falkland Is Time
			-3:00	Falk	FK%sT	1985 Sep 15
			-4:00	Falk	FK%sT

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

# Guyana
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar	# Georgetown
			-3:45	-	GBGT	1966 May 26 # Br Guiana Time
			-3:45	-	GYT	1975 Jul 31 # Guyana Time
			-3:00	-	GYT	1991
# IATA SSIM (1996-06) says -4:00.  Assume a 1991 switch.
			-4:00	-	GYT

# Paraguay
# From Paul Eggert (2006-03-22):
# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,
# and autumn transitions are from 00:00 -> 23:00.  Go with pre-1999
# editions of Shanks, and with the IATA, who say transitions occur at 00:00.
# 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
# <a href="http://www.diarionoticias.com.py/011000/nacional/naciona1.htm">
# Noticias, a daily paper in Asuncion, Paraguay (2000-10-01)
# </a>:
# 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 Norgaard 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 Raul Perasso via Jesper Norgaard Welen (2006-10-13)
# <http://www.presidencia.gov.py/decretos/D1867.pdf>
Rule	Para	2004	max	-	Oct	Sun>=15	0:00	1:00	S
Rule	Para	2005	max	-	Mar	Sun>=8	0:00	0	-

# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Asuncion	-3:50:40 -	LMT	1890
			-3:50:40 -	AMT	1931 Oct 10 # Asuncion Mean Time
			-4:00	-	PYT	1972 Oct # Paraguay Time
			-3:00	-	PYT	1974 Apr
			-4:00	Para	PY%sT

# Peru
#
# <a href="news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net">
# From Evelyn C. Leeper via Mark Brader (2003-10-26):</a>
# 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	PE%sT	# Peru Time

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

# 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	-	NEGT	1975 Nov 20 # Dutch Guiana Time
			-3:30	-	SRT	1984 Oct # Suriname Time
			-3:00	-	SRT

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

# 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 Norgaard Welen (2006-09-06):
# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
Rule	Uruguay	2006	max	-	Oct	Sun>=1	 2:00	1:00	S
Rule	Uruguay	2007	max	-	Mar	Sun>=8	 2:00	0	-
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Montevideo	-3:44:44 -	LMT	1898 Jun 28
			-3:44:44 -	MMT	1920 May  1	# Montevideo MT
			-3:30	Uruguay	UY%sT	1942 Dec 14	# Uruguay Time
			-3:00	Uruguay	UY%sT

# Venezuela
#
# From Kiraz Janicke (2007-09-25), in
# http://www.venezuelanalysis.com/analysis/2645:
# The proposal ... involves turning the clock back half an hour from
# +4.00 Greenwich Mean Time (GMT), to +4.30GMT, the time zone
# Venezuela had until December 31, 1964, when the current time zone
# was adopted. The change was due to take place on September 17 and
# then on September 24, but has since been postponed until December
# 31, to allow for compliance with international organizations, such
# as the International Office of Weights and Measures.

# 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	-	VET	1965	     # Venezuela Time
			-4:00	-	VET	2008
			-4:30	-	VET
