#
# 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 (2017-02-20):
#
# 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.
#
# Another source occasionally used is Edward W. Whitman, World Time Differences,
# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
# I found in the UCLA library.
#
# 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
#
# A reliable and entertaining source about time zones is
# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
#
# European-style abbreviations are commonly used along the Mediterranean.
# For sub-Saharan Africa abbreviations were less standardized.
# Previous editions of this database used WAT, CAT, SAT, and EAT
# for UT +00 through +03, respectively,
# but in 1997 Mark R V Murray reported that
# 'SAST' is the official abbreviation for +02 in the country of South Africa,
# 'CAT' is commonly used for +02 in countries north of South Africa, and
# 'WAT' is probably the best name for +01, as the common phrase for
# the area that includes Nigeria is "West Africa".
#
# To summarize, the following abbreviations seemed to have some currency:
#	 +00	GMT	Greenwich Mean Time
#	 +02	CAT	Central Africa Time
#	 +02	SAST	South Africa Standard Time
# and Murray suggested the following abbreviation:
#	 +01	WAT	West Africa Time
# Murray's suggestion seems to have caught on in news reports and the like.
# I vaguely recall 'WAT' also being used for -01 in the past but
# cannot now come up with solid citations.
#
# I invented the following abbreviations; corrections are welcome!
#	 +02	WAST	West Africa Summer Time
#	 +03	CAST	Central Africa Summer Time (no longer used)
#	 +03	SAST	South Africa Summer Time (no longer used)
#	 +03	EAT	East Africa Time
# 'EAT' also seems to have caught on; the others are rare but are paired
# with better-attested non-DST abbreviations.

# Algeria
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Algeria	1916	only	-	Jun	14	23:00s	1:00	S
Rule	Algeria	1916	1919	-	Oct	Sun>=1	23:00s	0	-
Rule	Algeria	1917	only	-	Mar	24	23:00s	1:00	S
Rule	Algeria	1918	only	-	Mar	 9	23:00s	1:00	S
Rule	Algeria	1919	only	-	Mar	 1	23:00s	1:00	S
Rule	Algeria	1920	only	-	Feb	14	23:00s	1:00	S
Rule	Algeria	1920	only	-	Oct	23	23:00s	0	-
Rule	Algeria	1921	only	-	Mar	14	23:00s	1:00	S
Rule	Algeria	1921	only	-	Jun	21	23:00s	0	-
Rule	Algeria	1939	only	-	Sep	11	23:00s	1:00	S
Rule	Algeria	1939	only	-	Nov	19	 1:00	0	-
Rule	Algeria	1944	1945	-	Apr	Mon>=1	 2:00	1:00	S
Rule	Algeria	1944	only	-	Oct	 8	 2:00	0	-
Rule	Algeria	1945	only	-	Sep	16	 1:00	0	-
Rule	Algeria	1971	only	-	Apr	25	23:00s	1:00	S
Rule	Algeria	1971	only	-	Sep	26	23:00s	0	-
Rule	Algeria	1977	only	-	May	 6	 0:00	1:00	S
Rule	Algeria	1977	only	-	Oct	21	 0:00	0	-
Rule	Algeria	1978	only	-	Mar	24	 1:00	1:00	S
Rule	Algeria	1978	only	-	Sep	22	 3:00	0	-
Rule	Algeria	1980	only	-	Apr	25	 0:00	1:00	S
Rule	Algeria	1980	only	-	Oct	31	 2:00	0	-
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
# more precise 0:09:21.
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15  0:01
			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
			0:00	Algeria	WE%sT	1940 Feb 25  2:00
			1:00	Algeria	CE%sT	1946 Oct  7
			0:00	-	WET	1956 Jan 29
			1:00	-	CET	1963 Apr 14
			0:00	Algeria	WE%sT	1977 Oct 21
			1:00	Algeria	CE%sT	1979 Oct 26
			0:00	Algeria	WE%sT	1981 May
			1:00	-	CET

# Angola
# Benin
# See Africa/Lagos.

# Botswana
# See Africa/Maputo.

# Burkina Faso
# See Africa/Abidjan.

# Burundi
# See Africa/Maputo.

# Cameroon
# See Africa/Lagos.

# Cape Verde / Cabo Verde
#
# Shanks gives 1907 for the transition to +02.
# Perhaps the 1911-05-26 Portuguese decree
# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
# merely made it official?
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone Atlantic/Cape_Verde -1:34:04 -	LMT	1907        # Praia
			-2:00	-	-02	1942 Sep
			-2:00	1:00	-01	1945 Oct 15
			-2:00	-	-02	1975 Nov 25  2:00
			-1:00	-	-01

# Central African Republic
# See Africa/Lagos.

# Chad
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Ndjamena	1:00:12 -	LMT	1912        # N'Djamena
			1:00	-	WAT	1979 Oct 14
			1:00	1:00	WAST	1980 Mar  8
			1:00	-	WAT

# Comoros
# See Africa/Nairobi.

# Democratic Republic of the Congo
# See Africa/Lagos for the western part and Africa/Maputo for the eastern.

# Republic of the Congo
# See Africa/Lagos.

# Côte d'Ivoire / Ivory Coast
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Abidjan	-0:16:08 -	LMT	1912
			 0:00	-	GMT
Link Africa/Abidjan Africa/Bamako	# Mali
Link Africa/Abidjan Africa/Banjul	# Gambia
Link Africa/Abidjan Africa/Conakry	# Guinea
Link Africa/Abidjan Africa/Dakar	# Senegal
Link Africa/Abidjan Africa/Freetown	# Sierra Leone
Link Africa/Abidjan Africa/Lome		# Togo
Link Africa/Abidjan Africa/Nouakchott	# Mauritania
Link Africa/Abidjan Africa/Ouagadougou	# Burkina Faso
Link Africa/Abidjan Africa/Sao_Tome	# São Tomé and Príncipe
Link Africa/Abidjan Atlantic/St_Helena	# St Helena

# Djibouti
# See Africa/Nairobi.

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

# Egypt

# Milne says Cairo used 2:05:08.9, the local mean time of the Abbasizeh
# observatory; round to nearest.  Milne also says that the official time for
# Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
# did not apply to Cairo, Alexandria, or Port Said.

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Egypt	1940	only	-	Jul	15	0:00	1:00	S
Rule	Egypt	1940	only	-	Oct	 1	0:00	0	-
Rule	Egypt	1941	only	-	Apr	15	0:00	1:00	S
Rule	Egypt	1941	only	-	Sep	16	0:00	0	-
Rule	Egypt	1942	1944	-	Apr	 1	0:00	1:00	S
Rule	Egypt	1942	only	-	Oct	27	0:00	0	-
Rule	Egypt	1943	1945	-	Nov	 1	0:00	0	-
Rule	Egypt	1945	only	-	Apr	16	0:00	1:00	S
Rule	Egypt	1957	only	-	May	10	0:00	1:00	S
Rule	Egypt	1957	1958	-	Oct	 1	0:00	0	-
Rule	Egypt	1958	only	-	May	 1	0:00	1:00	S
Rule	Egypt	1959	1981	-	May	 1	1:00	1:00	S
Rule	Egypt	1959	1965	-	Sep	30	3:00	0	-
Rule	Egypt	1966	1994	-	Oct	 1	3:00	0	-
Rule	Egypt	1982	only	-	Jul	25	1:00	1:00	S
Rule	Egypt	1983	only	-	Jul	12	1:00	1:00	S
Rule	Egypt	1984	1988	-	May	 1	1:00	1:00	S
Rule	Egypt	1989	only	-	May	 6	1:00	1:00	S
Rule	Egypt	1990	1994	-	May	 1	1:00	1:00	S
# IATA (after 1990) says transitions are at 0:00.
# Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.

# From Alexander Krivenyshev (2011-04-20):
# "...Egypt's interim cabinet decided on Wednesday to cancel daylight
# saving time after a poll posted on its website showed the majority of
# Egyptians would approve the cancellation."
#
# Egypt to cancel daylight saving time
# http://www.almasryalyoum.com/en/node/407168
# or
# http://www.worldtimezone.com/dst_news/dst_news_egypt04.html
Rule	Egypt	1995	2010	-	Apr	lastFri	 0:00s	1:00	S
Rule	Egypt	1995	2005	-	Sep	lastThu	24:00	0	-
# From Steffen Thorsen (2006-09-19):
# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
# Egypt will turn back clocks by one hour at the midnight of Thursday
# after observing the daylight saving time since May.
# http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
Rule	Egypt	2006	only	-	Sep	21	24:00	0	-
# From Dirk Losch (2007-08-14):
# I received a mail from an airline which says that the daylight
# saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
# From Jesper Nørgaard Welen (2007-08-15): [The following agree:]
# http://www.nentjes.info/Bill/bill5.htm
# http://www.timeanddate.com/worldclock/city.html?n=53
# From Steffen Thorsen (2007-09-04): The official information...:
# http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
Rule	Egypt	2007	only	-	Sep	Thu>=1	24:00	0	-
# From Abdelrahman Hassan (2007-09-06):
# Due to the Hijri (lunar Islamic calendar) year being 11 days shorter
# than the year of the Gregorian calendar, Ramadan shifts earlier each
# year. This year it will be observed September 13 (September is quite
# hot in Egypt), and the idea is to make fasting easier for workers by
# shifting business hours one hour out of daytime heat. Consequently,
# unless discontinued, next DST may end Thursday 28 August 2008.
# From Paul Eggert (2007-08-17):
# For lack of better info, assume the new rule is last Thursday in August.

# From Petr Machata (2009-04-06):
# The following appeared in Red Hat bugzilla[1] (edited):
#
# > $ zdump -v /usr/share/zoneinfo/Africa/Cairo | grep 2009
# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 21:59:59 2009 UTC = Thu =
# Apr 23
# > 23:59:59 2009 EET isdst=0 gmtoff=7200
# > /usr/share/zoneinfo/Africa/Cairo  Thu Apr 23 22:00:00 2009 UTC = Fri =
# Apr 24
# > 01:00:00 2009 EEST isdst=1 gmtoff=10800
# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 20:59:59 2009 UTC = Thu =
# Aug 27
# > 23:59:59 2009 EEST isdst=1 gmtoff=10800
# > /usr/share/zoneinfo/Africa/Cairo  Thu Aug 27 21:00:00 2009 UTC = Thu =
# Aug 27
# > 23:00:00 2009 EET isdst=0 gmtoff=7200
#
# > end date should be Thu Sep 24 2009 (Last Thursday in September at 23:59=
# :59)
# > http://support.microsoft.com/kb/958729/
#
# timeanddate[2] and another site I've found[3] also support that.
#
# [1] https://bugzilla.redhat.com/show_bug.cgi?id=492263
# [2] http://www.timeanddate.com/worldclock/clockchange.html?n=53
# [3] http://wwp.greenwichmeantime.com/time-zone/africa/egypt/

# From Arthur David Olson (2009-04-20):
# In 2009 (and for the next several years), Ramadan ends before the fourth
# Thursday in September; Egypt is expected to revert to the last Thursday
# in September.

# From Steffen Thorsen (2009-08-11):
# We have been able to confirm the August change with the Egyptian Cabinet
# Information and Decision Support Center:
# http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html
#
# The Middle East News Agency
# http://www.mena.org.eg/index.aspx
# also reports "Egypt starts winter time on August 21"
# today in article numbered "71, 11/08/2009 12:25 GMT."
# Only the title above is available without a subscription to their service,
# and can be found by searching for "winter" in their search engine
# (at least today).

# From Alexander Krivenyshev (2010-07-20):
# According to News from Egypt - Al-Masry Al-Youm Egypt's cabinet has
# decided that Daylight Saving Time will not be used in Egypt during
# Ramadan.
#
# Arabic translation:
# "Clocks to go back during Ramadan - and then forward again"
# http://www.almasryalyoum.com/en/news/clocks-go-back-during-ramadan-and-then-forward-again
# http://www.worldtimezone.com/dst_news/dst_news_egypt02.html

# From Ahmad El-Dardiry (2014-05-07):
# Egypt is to change back to Daylight system on May 15
# http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx

# From Gunther Vermier (2014-05-13):
# our Egypt office confirms that the change will be at 15 May "midnight" (24:00)

# From Imed Chihi (2014-06-04):
# We have finally "located" a precise official reference about the DST changes
# in Egypt.  The Ministers Cabinet decision is explained at
# http://www.cabinet.gov.eg/Media/CabinetMeetingsDetails.aspx?id=347 ...
# [T]his (Arabic) site is not accessible outside Egypt, but the page ...
# translates into: "With regard to daylight saving time, it is scheduled to
# take effect at exactly twelve o'clock this evening, Thursday, 15 MAY 2014,
# to be suspended by twelve o'clock on the evening of Thursday, 26 JUN 2014,
# and re-established again at the end of the month of Ramadan, at twelve
# o'clock on the evening of Thursday, 31 JUL 2014."  This statement has been
# reproduced by other (more accessible) sites[, e.g.,]...
# http://elgornal.net/news/news.aspx?id=4699258

# From Paul Eggert (2014-06-04):
# Sarah El Deeb and Lee Keath of AP report that the Egyptian government says
# the change is because of blackouts in Cairo, even though Ahram Online (cited
# above) says DST had no affect on electricity consumption.  There is
# no information about when DST will end this fall.  See:
# http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833

# From Steffen Thorsen (2015-04-08):
# Egypt will start DST on midnight after Thursday, April 30, 2015.
# This is based on a law (no 35) from May 15, 2014 saying it starts the last
# Thursday of April....  Clocks will still be turned back for Ramadan, but
# dates not yet announced....
# http://almogaz.com/news/weird-news/2015/04/05/1947105 ...
# http://www.timeanddate.com/news/time/egypt-starts-dst-2015.html

# From Ahmed Nazmy (2015-04-20):
# Egypt's ministers cabinet just announced ... that it will cancel DST at
# least for 2015.
#
# From Tim Parenti (2015-04-20):
# http://english.ahram.org.eg/WriterArticles/NewsContentP/1/128195/Egypt/No-daylight-saving-this-summer-Egypts-prime-minist.aspx
# "Egypt's cabinet agreed on Monday not to switch clocks for daylight saving
# time this summer, and carry out studies on the possibility of canceling the
# practice altogether in future years."
#
# From Paul Eggert (2015-04-24):
# Yesterday the office of Egyptian President El-Sisi announced his
# decision to abandon DST permanently.  See Ahram Online 2015-04-24.
# http://english.ahram.org.eg/NewsContent/1/64/128509/Egypt/Politics-/Sisi-cancels-daylight-saving-time-in-Egypt.aspx

# From Steffen Thorsen (2016-04-29):
# Egypt will have DST from July 7 until the end of October....
# http://english.ahram.org.eg/NewsContentP/1/204655/Egypt/Daylight-savings-time-returning-to-Egypt-on--July.aspx
# From Mina Samuel (2016-07-04):
# Egyptian government took the decision to cancel the DST,

Rule	Egypt	2008	only	-	Aug	lastThu	24:00	0	-
Rule	Egypt	2009	only	-	Aug	20	24:00	0	-
Rule	Egypt	2010	only	-	Aug	10	24:00	0	-
Rule	Egypt	2010	only	-	Sep	 9	24:00	1:00	S
Rule	Egypt	2010	only	-	Sep	lastThu	24:00	0	-
Rule	Egypt	2014	only	-	May	15	24:00	1:00	S
Rule	Egypt	2014	only	-	Jun	26	24:00	0	-
Rule	Egypt	2014	only	-	Jul	31	24:00	1:00	S
Rule	Egypt	2014	only	-	Sep	lastThu	24:00	0	-

# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Cairo	2:05:09 -	LMT	1900 Oct
			2:00	Egypt	EE%sT

# Equatorial Guinea
# See Africa/Lagos.

# Eritrea
# Ethiopia
# See Africa/Nairobi.

# Gabon
# See Africa/Lagos.

# Gambia
# See Africa/Abidjan.

# Ghana
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
# Whitman says DST was observed from 1931 to "the present";
# Shanks & Pottenger say 1936 to 1942;
# and September 1 to January 1 is given by:
# Scott Keltie J, Epstein M (eds), The Statesman's Year-Book,
# 57th ed. Macmillan, London (1920), OCLC 609408015, pp xxviii.
# For lack of better info, assume DST was observed from 1920 to 1942.
Rule	Ghana	1920	1942	-	Sep	 1	0:00	0:20	GHST
Rule	Ghana	1920	1942	-	Dec	31	0:00	0	GMT
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Accra	-0:00:52 -	LMT	1918
			 0:00	Ghana	GMT/+0020

# Guinea
# See Africa/Abidjan.

# Guinea-Bissau
#
# Shanks gives 1911-05-26 for the transition to WAT,
# evidently confusing the date of the Portuguese decree
# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
# with the date that it took effect, namely 1912-01-01.
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Bissau	-1:02:20 -	LMT	1912 Jan  1
			-1:00	-	-01	1975
			 0:00	-	GMT

# Kenya
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Nairobi	2:27:16	-	LMT	1928 Jul
			3:00	-	EAT	1930
			2:30	-	+0230	1940
			2:45	-	+0245	1960
			3:00	-	EAT
Link Africa/Nairobi Africa/Addis_Ababa	 # Ethiopia
Link Africa/Nairobi Africa/Asmara	 # Eritrea
Link Africa/Nairobi Africa/Dar_es_Salaam # Tanzania
Link Africa/Nairobi Africa/Djibouti
Link Africa/Nairobi Africa/Kampala	 # Uganda
Link Africa/Nairobi Africa/Mogadishu	 # Somalia
Link Africa/Nairobi Indian/Antananarivo	 # Madagascar
Link Africa/Nairobi Indian/Comoro
Link Africa/Nairobi Indian/Mayotte

# Lesotho
# See Africa/Johannesburg.

# Liberia
#
# From Paul Eggert (2017-03-02):
#
# The Nautical Almanac for the Year 1970, p 264, is the source for -0:44:30.
#
# In 1972 Liberia was the last country to switch from a UTC offset
# that was not a multiple of 15 or 20 minutes.  The 1972 change was on
# 1972-01-07, according to an entry dated 1972-01-04 on p 330 of:
# Presidential Papers: First year of the administration of
# President William R. Tolbert, Jr., July 23, 1971-July 31, 1972.
# Monrovia: Executive Mansion.
#
# Use the abbreviation "MMT" before 1972, as the more-accurate numeric
# abbreviation "-004430" would be one byte over the POSIX limit.
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Monrovia	-0:43:08 -	LMT	1882
			-0:43:08 -	MMT	1919 Mar # Monrovia Mean Time
			-0:44:30 -	MMT	1972 Jan 7 # approximately MMT
			 0:00	-	GMT

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

# Libya

# From Even Scharning (2012-11-10):
# Libya set their time one hour back at 02:00 on Saturday November 10.
# http://www.libyaherald.com/2012/11/04/clocks-to-go-back-an-hour-on-saturday/
# Here is an official source [in Arabic]: http://ls.ly/fb6Yc
#
# Steffen Thorsen forwarded a translation (2012-11-10) in
# http://mm.icann.org/pipermail/tz/2012-November/018451.html
#
# From Tim Parenti (2012-11-11):
# Treat the 2012-11-10 change as a zone change from UTC+2 to UTC+1.
# The DST rules planned for 2013 and onward roughly mirror those of Europe
# (either two days before them or five days after them, so as to fall on
# lastFri instead of lastSun).

# From Even Scharning (2013-10-25):
# The scheduled end of DST in Libya on Friday, October 25, 2013 was
# cancelled yesterday....
# http://www.libyaherald.com/2013/10/24/correction-no-time-change-tomorrow/
#
# From Paul Eggert (2013-10-25):
# For now, assume they're reverting to the pre-2012 rules of permanent UT +02.

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Libya	1951	only	-	Oct	14	2:00	1:00	S
Rule	Libya	1952	only	-	Jan	 1	0:00	0	-
Rule	Libya	1953	only	-	Oct	 9	2:00	1:00	S
Rule	Libya	1954	only	-	Jan	 1	0:00	0	-
Rule	Libya	1955	only	-	Sep	30	0:00	1:00	S
Rule	Libya	1956	only	-	Jan	 1	0:00	0	-
Rule	Libya	1982	1984	-	Apr	 1	0:00	1:00	S
Rule	Libya	1982	1985	-	Oct	 1	0:00	0	-
Rule	Libya	1985	only	-	Apr	 6	0:00	1:00	S
Rule	Libya	1986	only	-	Apr	 4	0:00	1:00	S
Rule	Libya	1986	only	-	Oct	 3	0:00	0	-
Rule	Libya	1987	1989	-	Apr	 1	0:00	1:00	S
Rule	Libya	1987	1989	-	Oct	 1	0:00	0	-
Rule	Libya	1997	only	-	Apr	 4	0:00	1:00	S
Rule	Libya	1997	only	-	Oct	 4	0:00	0	-
Rule	Libya	2013	only	-	Mar	lastFri	1:00	1:00	S
Rule	Libya	2013	only	-	Oct	lastFri	2:00	0	-
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Tripoli	0:52:44 -	LMT	1920
			1:00	Libya	CE%sT	1959
			2:00	-	EET	1982
			1:00	Libya	CE%sT	1990 May  4
# The 1996 and 1997 entries are from Shanks & Pottenger;
# the IATA SSIM data entries contain some obvious errors.
			2:00	-	EET	1996 Sep 30
			1:00	Libya	CE%sT	1997 Oct  4
			2:00	-	EET	2012 Nov 10  2:00
			1:00	Libya	CE%sT	2013 Oct 25  2:00
			2:00	-	EET

# Madagascar
# See Africa/Nairobi.

# Malawi
# See Africa/Maputo.

# Mali
# Mauritania
# See Africa/Abidjan.

# Mauritius

# From Steffen Thorsen (2008-06-25):
# Mauritius plans to observe DST from 2008-11-01 to 2009-03-31 on a trial
# basis....
# It seems that Mauritius observed daylight saving time from 1982-10-10 to
# 1983-03-20 as well, but that was not successful....
# http://www.timeanddate.com/news/time/mauritius-daylight-saving-time.html

# From Alex Krivenyshev (2008-06-25):
# http://economicdevelopment.gov.mu/portal/site/Mainhomepage/menuitem.a42b24128104d9845dabddd154508a0c/?content_id=0a7cee8b5d69a110VgnVCM1000000a04a8c0RCRD

# From Arthur David Olson (2008-06-30):
# The www.timeanddate.com article cited by Steffen Thorsen notes that "A
# final decision has yet to be made on the times that daylight saving
# would begin and end on these dates." As a place holder, use midnight.

# From Paul Eggert (2008-06-30):
# Follow Thorsen on DST in 1982/1983, instead of Shanks & Pottenger.

# From Steffen Thorsen (2008-07-10):
# According to
# http://www.lexpress.mu/display_article.php?news_id=111216
# (in French), Mauritius will start and end their DST a few days earlier
# than previously announced (2008-11-01 to 2009-03-31).  The new start
# date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
# given, but it is probably at either 2 or 3 wall clock time).
#
# A little strange though, since the article says that they moved the date
# to align itself with Europe and USA which also change time on that date,
# but that means they have not paid attention to what happened in
# USA/Canada last year (DST ends first Sunday in November). I also wonder
# why that they end on a Friday, instead of aligning with Europe which
# changes two days later.

# From Alex Krivenyshev (2008-07-11):
# Seems that English language article "The revival of daylight saving
# time: Energy conservation?"- No. 16578 (07/11/2008) was originally
# published on Monday, June 30, 2008...
#
# I guess that article in French "Le gouvernement avance l'introduction
# de l'heure d'été" stating that DST in Mauritius starting on October 26
# and ending on March 27, 2009 is the most recent one....
# http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html

# From Riad M. Hossen Ally (2008-08-03):
# The Government of Mauritius weblink
# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD
# Cabinet Decision of July 18th, 2008 states as follows:
#
# 4. ...Cabinet has agreed to the introduction into the National Assembly
# of the Time Bill which provides for the introduction of summer time in
# Mauritius. The summer time period which will be of one hour ahead of
# the standard time, will be aligned with that in Europe and the United
# States of America. It will start at two o'clock in the morning on the
# last Sunday of October and will end at two o'clock in the morning on
# the last Sunday of March the following year. The summer time for the
# year 2008-2009 will, therefore, be effective as from 26 October 2008
# and end on 29 March 2009.

# From Ed Maste (2008-10-07):
# THE TIME BILL (No. XXVII of 2008) Explanatory Memorandum states the
# beginning / ending of summer time is 2 o'clock standard time in the
# morning of the last Sunday of October / last Sunday of March.
# http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf

# From Steffen Thorsen (2009-06-05):
# According to several sources, Mauritius will not continue to observe
# DST the coming summer...
#
# Some sources, in French:
# http://www.defimedia.info/news/946/Rashid-Beebeejaun-:-%C2%AB-L%E2%80%99heure-d%E2%80%99%C3%A9t%C3%A9-ne-sera-pas-appliqu%C3%A9e-cette-ann%C3%A9e-%C2%BB
# http://lexpress.mu/Story/3398~Beebeejaun---Les-objectifs-d-%C3%A9conomie-d-%C3%A9nergie-de-l-heure-d-%C3%A9t%C3%A9-ont-%C3%A9t%C3%A9-atteints-
#
# Our wrap-up:
# http://www.timeanddate.com/news/time/mauritius-dst-will-not-repeat.html

# From Arthur David Olson (2009-07-11):
# The "mauritius-dst-will-not-repeat" wrapup includes this:
# "The trial ended on March 29, 2009, when the clocks moved back by one hour
# at 2am (or 02:00) local time..."

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule Mauritius	1982	only	-	Oct	10	0:00	1:00	S
Rule Mauritius	1983	only	-	Mar	21	0:00	0	-
Rule Mauritius	2008	only	-	Oct	lastSun	2:00	1:00	S
Rule Mauritius	2009	only	-	Mar	lastSun	2:00	0	-
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone Indian/Mauritius	3:50:00 -	LMT	1907 # Port Louis
			4:00 Mauritius	+04/+05
# Agalega Is, Rodriguez
# no information; probably like Indian/Mauritius

# Mayotte
# See Africa/Nairobi.

# Morocco
# See the 'europe' file for Spanish Morocco (Africa/Ceuta).

# From Alex Krivenyshev (2008-05-09):
# Here is an article that Morocco plan to introduce Daylight Saving Time between
# 1 June, 2008 and 27 September, 2008.
#
# "... Morocco is to save energy by adjusting its clock during summer so it will
# be one hour ahead of GMT between 1 June and 27 September, according to
# Communication Minister and Government Spokesman, Khalid Naciri...."
#
# http://www.worldtimezone.net/dst_news/dst_news_morocco01.html
# http://en.afrik.com/news11892.html

# From Alex Krivenyshev (2008-05-09):
# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe
# Presse:
# http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view
#
# Morocco shifts to daylight time on June 1st through September 27, Govt.
# spokesman.

# From Patrice Scattolin (2008-05-09):
# According to this article:
# http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html
# (and republished here: <http://www.actu.ma/heure-dete-comment_i127896_0.html>)
# the changes occur at midnight:
#
# Saturday night May 31st at midnight (which in French is to be
# interpreted as the night between Saturday and Sunday)
# Sunday night the 28th at midnight
#
# Seeing that the 28th is Monday, I am guessing that she intends to say
# the midnight of the 28th which is the midnight between Sunday and
# Monday, which jives with other sources that say that it's inclusive
# June 1st to Sept 27th.
#
# The decision was taken by decree *2-08-224 *but I can't find the decree
# published on the web.
#
# It's also confirmed here:
# http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm
# on a government portal as being between June 1st and Sept 27th (not yet
# posted in English).
#
# The following Google query will generate many relevant hits:
# http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search

# From Steffen Thorsen (2008-08-27):
# Morocco will change the clocks back on the midnight between August 31
# and September 1. They originally planned to observe DST to near the end
# of September:
#
# One article about it (in French):
# http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default
#
# We have some further details posted here:
# http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html

# From Steffen Thorsen (2009-03-17):
# Morocco will observe DST from 2009-06-01 00:00 to 2009-08-21 00:00 according
# to many sources, such as
# http://news.marweb.com/morocco/entertainment/morocco-daylight-saving.html
# http://www.medi1sat.ma/fr/depeche.aspx?idp=2312
# (French)
#
# Our summary:
# http://www.timeanddate.com/news/time/morocco-starts-dst-2009.html

# From Alexander Krivenyshev (2009-03-17):
# Here is a link to official document from Royaume du Maroc Premier Ministre,
# Ministère de la Modernisation des Secteurs Publics
#
# Under Article 1 of Royal Decree No. 455-67 of Act 23 safar 1387 (2 June 1967)
# concerning the amendment of the legal time, the Ministry of Modernization of
# Public Sectors announced that the official time in the Kingdom will be
# advanced 60 minutes from Sunday 31 May 2009 at midnight.
#
# http://www.mmsp.gov.ma/francais/Actualites_fr/PDF_Actualites_Fr/HeureEte_FR.pdf
# http://www.worldtimezone.com/dst_news/dst_news_morocco03.html

# From Steffen Thorsen (2010-04-13):
# Several news media in Morocco report that the Ministry of Modernization
# of Public Sectors has announced that Morocco will have DST from
# 2010-05-02 to 2010-08-08.
#
# Example:
# http://www.lavieeco.com/actualites/4099-le-maroc-passera-a-l-heure-d-ete-gmt1-le-2-mai.html
# (French)
# Our page:
# http://www.timeanddate.com/news/time/morocco-starts-dst-2010.html

# From Dan Abitol (2011-03-30):
# ...Rules for Africa/Casablanca are the following (24h format)
# The 3rd April 2011 at 00:00:00, [it] will be 3rd April 01:00:00
# The 31st July 2011 at 00:59:59, [it] will be 31st July 00:00:00
# ...Official links of change in morocco
# The change was broadcast on the FM Radio
# I ve called ANRT (telecom regulations in Morocco) at
# +212.537.71.84.00
# http://www.anrt.net.ma/fr/
# They said that
# http://www.map.ma/fr/sections/accueil/l_heure_legale_au_ma/view
# is the official publication to look at.
# They said that the decision was already taken.
#
# More articles in the press
# http://www.yabiladi.com/articles/details/5058/secret-l-heure-d-ete-maroc-leve.html
# http://www.lematin.ma/Actualite/Express/Article.asp?id=148923
# http://www.lavieeco.com/actualite/Le-Maroc-passe-sur-GMT%2B1-a-partir-de-dim

# From Petr Machata (2011-03-30):
# They have it written in English here:
# http://www.map.ma/eng/sections/home/morocco_to_spring_fo/view
#
# It says there that "Morocco will resume its standard time on July 31,
# 2011 at midnight." Now they don't say whether they mean midnight of
# wall clock time (i.e. 11pm UTC), but that's what I would assume. It has
# also been like that in the past.

# From Alexander Krivenyshev (2012-03-09):
# According to Infomédiaire web site from Morocco (infomediaire.ma),
# on March 9, 2012, (in French) Heure légale:
# Le Maroc adopte officiellement l'heure d'été
# http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9
# Governing Council adopted draft decree, that Morocco DST starts on
# the last Sunday of March (March 25, 2012) and ends on
# last Sunday of September (September 30, 2012)
# except the month of Ramadan.
# or (brief)
# http://www.worldtimezone.com/dst_news/dst_news_morocco06.html

# From Arthur David Olson (2012-03-10):
# The infomediaire.ma source indicates that the system is to be in
# effect every year. It gives 03H00 as the "fall back" time of day;
# it lacks a "spring forward" time of day; assume 2:00 XXX.
# Wait on specifying the Ramadan exception for details about
# start date, start time of day, end date, and end time of day XXX.

# From Christophe Tropamer (2012-03-16):
# Seen Morocco change again:
# http://www.le2uminutes.com/actualite.php
# "...à partir du dernier dimanche d'avril et non fins mars,
# comme annoncé précédemment."

# From Milamber Space Network (2012-07-17):
# The official return to GMT is announced by the Moroccan government:
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288 [in French]
#
# Google translation, lightly edited:
# Back to the standard time of the Kingdom (GMT)
# Pursuant to Decree No. 2-12-126 issued on 26 Jumada (I) 1433 (April 18,
# 2012) and in accordance with the order of Mr. President of the
# Government No. 3-47-12 issued on 24 Sha'ban (11 July 2012), the Ministry
# of Public Service and Administration Modernization announces the return
# of the legal time of the Kingdom (GMT) from Friday, July 20, 2012 until
# Monday, August 20, 2012.  So the time will be delayed by 60 minutes from
# 3:00 am Friday, July 20, 2012 and will again be advanced by 60 minutes
# August 20, 2012 from 2:00 am.

# From Paul Eggert (2013-03-06):
# Morocco's daylight-saving transitions due to Ramadan seem to be
# announced a bit in advance.  On 2012-07-11 the Moroccan government
# announced that year's Ramadan daylight-saving transitions would be
# 2012-07-20 and 2012-08-20; see
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288

# From Andrew Paprocki (2013-07-02):
# Morocco announced that the year's Ramadan daylight-savings
# transitions would be 2013-07-07 and 2013-08-10; see:
# http://www.maroc.ma/en/news/morocco-suspends-daylight-saving-time-july-7-aug10

# From Steffen Thorsen (2013-09-28):
# Morocco extends DST by one month, on very short notice, just 1 day
# before it was going to end.  There is a new decree (2.13.781) for
# this, where DST from now on goes from last Sunday of March at 02:00
# to last Sunday of October at 03:00, similar to EU rules.  Official
# source (French):
# http://www.maroc.gov.ma/fr/actualites/lhoraire-dete-gmt1-maintenu-jusquau-27-octobre-2013
# Another source (specifying the time for start and end in the decree):
# http://www.lemag.ma/Heure-d-ete-au-Maroc-jusqu-au-27-octobre_a75620.html

# From Sebastien Willemijns (2014-03-18):
# http://www.afriquinfos.com/articles/2014/3/18/maroc-heure-dete-avancez-tous-horloges-247891.asp

# From Milamber Space Network (2014-06-05):
# The Moroccan government has recently announced that the country will return
# to standard time at 03:00 on Saturday, June 28, 2014 local time....  DST
# will resume again at 02:00 on Saturday, August 2, 2014....
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=586

# From Milamber (2015-06-08):
# (Google Translation) The hour will thus be delayed 60 minutes
# Sunday, June 14 at 3:00, the ministry said in a statement, adding
# that the time will be advanced again 60 minutes Sunday, July 19,
# 2015 at 2:00.  The move comes under 2.12.126 Decree of 26 Jumada I
# 1433 (18 April 2012) and the decision of the Head of Government of
# 16 N. 3-29-15 Chaaban 1435 (4 June 2015).
# Source (french):
# http://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/
#
# From Milamber (2015-06-09):
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=863
#
# From Michael Deckers (2015-06-09):
# [The gov.ma announcement] would (probably) make the switch on 2015-07-19 go
# from 03:00 to 04:00 rather than from 02:00 to 03:00, as in the patch....
# I think the patch is correct and the quoted text is wrong; the text in
# <http://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/> agrees
# with the patch.

# From Paul Eggert (2015-06-08):
# For now, guess that later spring and fall transitions will use 2015's rules,
# and guess that Morocco will switch to standard time at 03:00 the last
# Sunday before Ramadan, and back to DST at 02:00 the first Sunday after
# Ramadan.  To implement this, transition dates for 2016 through 2037 were
# determined by running the following program under GNU Emacs 24.3, with the
# results integrated by hand into the table below.
# (let ((islamic-year 1437))
#   (require 'cal-islam)
#   (while (< islamic-year 1460)
#     (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
#           (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
#           (sunday 0))
#       (while (/= sunday (mod (setq a (1- a)) 7)))
#       (while (/= sunday (mod b 7))
#         (setq b (1+ b)))
#       (setq a (calendar-gregorian-from-absolute a))
#       (setq b (calendar-gregorian-from-absolute b))
#       (insert
#        (format
#         (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 3:00\t0\t-\n"
#                 "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 2:00\t1:00\tS\n")
#         (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
#         (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
#     (setq islamic-year (+ 1 islamic-year))))

# RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S

Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
Rule	Morocco	1939	only	-	Nov	19	 0:00	0	-
Rule	Morocco	1940	only	-	Feb	25	 0:00	1:00	S
Rule	Morocco	1945	only	-	Nov	18	 0:00	0	-
Rule	Morocco	1950	only	-	Jun	11	 0:00	1:00	S
Rule	Morocco	1950	only	-	Oct	29	 0:00	0	-
Rule	Morocco	1967	only	-	Jun	 3	12:00	1:00	S
Rule	Morocco	1967	only	-	Oct	 1	 0:00	0	-
Rule	Morocco	1974	only	-	Jun	24	 0:00	1:00	S
Rule	Morocco	1974	only	-	Sep	 1	 0:00	0	-
Rule	Morocco	1976	1977	-	May	 1	 0:00	1:00	S
Rule	Morocco	1976	only	-	Aug	 1	 0:00	0	-
Rule	Morocco	1977	only	-	Sep	28	 0:00	0	-
Rule	Morocco	1978	only	-	Jun	 1	 0:00	1:00	S
Rule	Morocco	1978	only	-	Aug	 4	 0:00	0	-
Rule	Morocco	2008	only	-	Jun	 1	 0:00	1:00	S
Rule	Morocco	2008	only	-	Sep	 1	 0:00	0	-
Rule	Morocco	2009	only	-	Jun	 1	 0:00	1:00	S
Rule	Morocco	2009	only	-	Aug	21	 0:00	0	-
Rule	Morocco	2010	only	-	May	 2	 0:00	1:00	S
Rule	Morocco	2010	only	-	Aug	 8	 0:00	0	-
Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
Rule	Morocco	2011	only	-	Jul	31	 0:00	0	-
Rule	Morocco	2012	2013	-	Apr	lastSun	 2:00	1:00	S
Rule	Morocco	2012	only	-	Jul	20	 3:00	0	-
Rule	Morocco	2012	only	-	Aug	20	 2:00	1:00	S
Rule	Morocco	2012	only	-	Sep	30	 3:00	0	-
Rule	Morocco	2013	only	-	Jul	 7	 3:00	0	-
Rule	Morocco	2013	only	-	Aug	10	 2:00	1:00	S
Rule	Morocco	2013	max	-	Oct	lastSun	 3:00	0	-
Rule	Morocco	2014	2021	-	Mar	lastSun	 2:00	1:00	S
Rule	Morocco	2014	only	-	Jun	28	 3:00	0	-
Rule	Morocco	2014	only	-	Aug	 2	 2:00	1:00	S
Rule	Morocco	2015	only	-	Jun	14	 3:00	0	-
Rule	Morocco	2015	only	-	Jul	19	 2:00	1:00	S
Rule	Morocco	2016	only	-	Jun	 5	 3:00	0	-
Rule	Morocco	2016	only	-	Jul	10	 2:00	1:00	S
Rule	Morocco	2017	only	-	May	21	 3:00	0	-
Rule	Morocco	2017	only	-	Jul	 2	 2:00	1:00	S
Rule	Morocco	2018	only	-	May	13	 3:00	0	-
Rule	Morocco	2018	only	-	Jun	17	 2:00	1:00	S
Rule	Morocco	2019	only	-	May	 5	 3:00	0	-
Rule	Morocco	2019	only	-	Jun	 9	 2:00	1:00	S
Rule	Morocco	2020	only	-	Apr	19	 3:00	0	-
Rule	Morocco	2020	only	-	May	24	 2:00	1:00	S
Rule	Morocco	2021	only	-	Apr	11	 3:00	0	-
Rule	Morocco	2021	only	-	May	16	 2:00	1:00	S
Rule	Morocco	2022	only	-	May	 8	 2:00	1:00	S
Rule	Morocco	2023	only	-	Apr	23	 2:00	1:00	S
Rule	Morocco	2024	only	-	Apr	14	 2:00	1:00	S
Rule	Morocco	2025	only	-	Apr	 6	 2:00	1:00	S
Rule	Morocco	2026	max	-	Mar	lastSun	 2:00	1:00	S
Rule	Morocco	2036	only	-	Oct	19	 3:00	0	-
Rule	Morocco	2037	only	-	Oct	 4	 3:00	0	-

# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
			 0:00	Morocco	WE%sT	1984 Mar 16
			 1:00	-	CET	1986
			 0:00	Morocco	WE%sT

# Western Sahara
#
# From Gwillim Law (2013-10-22):
# A correspondent who is usually well informed about time zone matters
# ... says that Western Sahara observes daylight saving time, just as
# Morocco does.
#
# From Paul Eggert (2013-10-23):
# Assume that this has been true since Western Sahara switched to GMT,
# since most of it was then controlled by Morocco.

Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan # El Aaiún
			-1:00	-	-01	1976 Apr 14
			 0:00	Morocco	WE%sT

# Mozambique
#
# Shanks gives 1903-03-01 for the transition to CAT.
# Perhaps the 1911-05-26 Portuguese decree
# https://dre.pt/pdf1sdip/1911/05/12500/23132313.pdf
# merely made it official?
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Maputo	2:10:20 -	LMT	1903 Mar
			2:00	-	CAT
Link Africa/Maputo Africa/Blantyre	# Malawi
Link Africa/Maputo Africa/Bujumbura	# Burundi
Link Africa/Maputo Africa/Gaborone	# Botswana
Link Africa/Maputo Africa/Harare	# Zimbabwe
Link Africa/Maputo Africa/Kigali	# Rwanda
Link Africa/Maputo Africa/Lubumbashi	# E Dem. Rep. of Congo
Link Africa/Maputo Africa/Lusaka	# Zambia

# Namibia
# The 1994-04-03 transition is from Shanks & Pottenger.
# Shanks & Pottenger report no DST after 1998-04; go with IATA.

# From Petronella Sibeene (2007-03-30):
# http://allafrica.com/stories/200703300178.html
# While the entire country changes its time, Katima Mulilo and other
# settlements in Caprivi unofficially will not because the sun there
# rises and sets earlier compared to other regions.  Chief of
# Forecasting Riaan van Zyl explained that the far eastern parts of
# the country are close to 40 minutes earlier in sunrise than the rest
# of the country.
#
# From Paul Eggert (2017-02-22):
# Although the Zambezi Region (formerly known as Caprivi) informally
# observes Botswana time, we have no details about historical practice.
# In the meantime people there can use Africa/Gaborone.
# See: Immanuel S. The Namibian. 2017-02-23.
# http://www.namibian.com.na/51480/read/Time-change-divides-lawmakers

# RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Namibia	1994	max	-	Sep	Sun>=1	2:00	1:00	S
Rule	Namibia	1995	max	-	Apr	Sun>=1	2:00	0	-
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Windhoek	1:08:24 -	LMT	1892 Feb 8
			1:30	-	+0130	1903 Mar
			2:00	-	SAST	1942 Sep 20  2:00
			2:00	1:00	SAST	1943 Mar 21  2:00
			2:00	-	SAST	1990 Mar 21 # independence
			2:00	-	CAT	1994 Apr  3
			1:00	Namibia	WA%sT

# Niger
# See Africa/Lagos.

# Nigeria
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Lagos	0:13:36 -	LMT	1919 Sep
			1:00	-	WAT
Link Africa/Lagos Africa/Bangui	     # Central African Republic
Link Africa/Lagos Africa/Brazzaville # Rep. of the Congo
Link Africa/Lagos Africa/Douala	     # Cameroon
Link Africa/Lagos Africa/Kinshasa    # Dem. Rep. of the Congo (west)
Link Africa/Lagos Africa/Libreville  # Gabon
Link Africa/Lagos Africa/Luanda	     # Angola
Link Africa/Lagos Africa/Malabo	     # Equatorial Guinea
Link Africa/Lagos Africa/Niamey	     # Niger
Link Africa/Lagos Africa/Porto-Novo  # Benin

# Réunion
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun # Saint-Denis
			4:00	-	+04
#
# Crozet Islands also observes Réunion time; see the 'antarctica' file.
#
# Scattered Islands (Îles Éparses) administered from Réunion are as follows.
# The following information about them is taken from
# Îles Éparses (<http://www.outre-mer.gouv.fr/domtom/ile.htm>, 1997-07-22,
# in French; no longer available as of 1999-08-17).
# We have no info about their time zone histories.
#
# Bassas da India - uninhabited
# Europa Island - inhabited from 1905 to 1910 by two families
# Glorioso Is - inhabited until at least 1958
# Juan de Nova - uninhabited
# Tromelin - inhabited until at least 1958

# Rwanda
# See Africa/Maputo.

# St Helena
# See Africa/Abidjan.
# The other parts of the St Helena territory are similar:
#	Tristan da Cunha: on GMT, say Whitman and the CIA
#	Ascension: on GMT, say the USNO (1995-12-21) and the CIA
#	Gough (scientific station since 1955; sealers wintered previously):
#		on GMT, says the CIA
#	Inaccessible, Nightingale: uninhabited

# São Tomé and Príncipe
# Senegal
# See Africa/Abidjan.

# Seychelles
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Indian/Mahe	3:41:48 -	LMT	1906 Jun # Victoria
			4:00	-	+04
# From Paul Eggert (2001-05-30):
# Aldabra, Farquhar, and Desroches, originally dependencies of the
# Seychelles, were transferred to the British Indian Ocean Territory
# in 1965 and returned to Seychelles control in 1976.  We don't know
# whether this affected their time zone, so omit this for now.
# Possibly the islands were uninhabited.

# Sierra Leone
# See Africa/Abidjan.

# Somalia
# See Africa/Nairobi.

# South Africa
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	SA	1942	1943	-	Sep	Sun>=15	2:00	1:00	-
Rule	SA	1943	1944	-	Mar	Sun>=15	2:00	0	-
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone Africa/Johannesburg 1:52:00 -	LMT	1892 Feb 8
			1:30	-	SAST	1903 Mar
			2:00	SA	SAST
Link Africa/Johannesburg Africa/Maseru	   # Lesotho
Link Africa/Johannesburg Africa/Mbabane    # Swaziland
#
# Marion and Prince Edward Is
# scientific station since 1947
# no information

# Sudan
#
# From <http://www.sunanews.net/sn13jane.html>
# Sudan News Agency (2000-01-13),
# also reported by Michaël De Beukelaer-Dossche via Steffen Thorsen:
# Clocks will be moved ahead for 60 minutes all over the Sudan as of noon
# Saturday....  This was announced Thursday by Caretaker State Minister for
# Manpower Abdul-Rahman Nur-Eddin.
#
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Sudan	1970	only	-	May	 1	0:00	1:00	S
Rule	Sudan	1970	1985	-	Oct	15	0:00	0	-
Rule	Sudan	1971	only	-	Apr	30	0:00	1:00	S
Rule	Sudan	1972	1985	-	Apr	lastSun	0:00	1:00	S
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Khartoum	2:10:08 -	LMT	1931
			2:00	Sudan	CA%sT	2000 Jan 15 12:00
			3:00	-	EAT

# South Sudan
Link Africa/Khartoum Africa/Juba

# Swaziland
# See Africa/Johannesburg.

# Tanzania
# See Africa/Nairobi.

# Togo
# See Africa/Abidjan.

# Tunisia

# From Gwillim Law (2005-04-30):
# My correspondent, Risto Nykänen, has alerted me to another adoption of DST,
# this time in Tunisia.  According to Yahoo France News
# <http://fr.news.yahoo.com/050426/5/4dumk.html>, in a story attributed to AP
# and dated 2005-04-26, "Tunisia has decided to advance its official time by
# one hour, starting on Sunday, May 1.  Henceforth, Tunisian time will be
# UTC+2 instead of UTC+1.  The change will take place at 23:00 UTC next
# Saturday."  (My translation)
#
# From Oscar van Vlijmen (2005-05-02):
# La Presse, the first national daily newspaper ...
# http://www.lapresse.tn/archives/archives280405/actualites/lheure.html
# ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,
# 1h standard time.
#
# From Atef Loukil (2006-03-28):
# The daylight saving time will be the same each year:
# Beginning      : the last Sunday of March at 02:00
# Ending         : the last Sunday of October at 03:00 ...
# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50

# From Steffen Thorsen (2009-03-16):
# According to several news sources, Tunisia will not observe DST this year.
# (Arabic)
# http://www.elbashayer.com/?page=viewn&nid=42546
# http://www.babnet.net/kiwidetail-15295.asp
#
# We have also confirmed this with the US embassy in Tunisia.
# We have a wrap-up about this on the following page:
# http://www.timeanddate.com/news/time/tunisia-cancels-dst-2009.html

# From Alexander Krivenyshev (2009-03-17):
# Here is a link to Tunis Afrique Presse News Agency
#
# Standard time to be kept the whole year long (tap.info.tn):
#
# (in English)
# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=26813&Itemid=157
#
# (in Arabic)
# http://www.tap.info.tn/ar/index.php?option=com_content&task=view&id=61240&Itemid=1

# From Arthur David Olson (2009-03-18):
# The Tunis Afrique Presse News Agency notice contains this: "This measure is
# due to the fact that the fasting month of Ramadan coincides with the period
# concerned by summer time.  Therefore, the standard time will be kept
# unchanged the whole year long."  So foregoing DST seems to be an exception
# (albeit one that may be repeated in the future).

# From Alexander Krivenyshev (2010-03-27):
# According to some news reports Tunis confirmed not to use DST in 2010
#
# (translation):
# "The Tunisian government has decided to abandon DST, which was scheduled on
# Sunday...
# Tunisian authorities had suspended the DST for the first time last year also
# coincided with the month of Ramadan..."
#
# (in Arabic)
# http://www.moheet.com/show_news.aspx?nid=358861&pg=1
# http://www.almadenahnews.com/newss/news.php?c=118&id=38036
# http://www.worldtimezone.com/dst_news/dst_news_tunis02.html

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Tunisia	1939	only	-	Apr	15	23:00s	1:00	S
Rule	Tunisia	1939	only	-	Nov	18	23:00s	0	-
Rule	Tunisia	1940	only	-	Feb	25	23:00s	1:00	S
Rule	Tunisia	1941	only	-	Oct	 6	 0:00	0	-
Rule	Tunisia	1942	only	-	Mar	 9	 0:00	1:00	S
Rule	Tunisia	1942	only	-	Nov	 2	 3:00	0	-
Rule	Tunisia	1943	only	-	Mar	29	 2:00	1:00	S
Rule	Tunisia	1943	only	-	Apr	17	 2:00	0	-
Rule	Tunisia	1943	only	-	Apr	25	 2:00	1:00	S
Rule	Tunisia	1943	only	-	Oct	 4	 2:00	0	-
Rule	Tunisia	1944	1945	-	Apr	Mon>=1	 2:00	1:00	S
Rule	Tunisia	1944	only	-	Oct	 8	 0:00	0	-
Rule	Tunisia	1945	only	-	Sep	16	 0:00	0	-
Rule	Tunisia	1977	only	-	Apr	30	 0:00s	1:00	S
Rule	Tunisia	1977	only	-	Sep	24	 0:00s	0	-
Rule	Tunisia	1978	only	-	May	 1	 0:00s	1:00	S
Rule	Tunisia	1978	only	-	Oct	 1	 0:00s	0	-
Rule	Tunisia	1988	only	-	Jun	 1	 0:00s	1:00	S
Rule	Tunisia	1988	1990	-	Sep	lastSun	 0:00s	0	-
Rule	Tunisia	1989	only	-	Mar	26	 0:00s	1:00	S
Rule	Tunisia	1990	only	-	May	 1	 0:00s	1:00	S
Rule	Tunisia	2005	only	-	May	 1	 0:00s	1:00	S
Rule	Tunisia	2005	only	-	Sep	30	 1:00s	0	-
Rule	Tunisia	2006	2008	-	Mar	lastSun	 2:00s	1:00	S
Rule	Tunisia	2006	2008	-	Oct	lastSun	 2:00s	0	-

# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
# more precise 0:09:21.
# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Africa/Tunis	0:40:44 -	LMT	1881 May 12
			0:09:21	-	PMT	1911 Mar 11 # Paris Mean Time
			1:00	Tunisia	CE%sT

# Uganda
# See Africa/Nairobi.

# Zambia
# Zimbabwe
# See Africa/Maputo.
