#
# 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 (2014-10-31):
#
# 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.
#
# 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,
# 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).
#
# Previous editions of this database used WAT, CAT, SAT, and EAT
# for +0:00 through +3:00, respectively,
# but Mark R V Murray reports that
# 'SAST' is the official abbreviation for +2:00 in the country of South Africa,
# 'CAT' is commonly used for +2:00 in countries north of South Africa, and
# 'WAT' is probably the best name for +1:00, as the common phrase for
# the area that includes Nigeria is "West Africa".
# He has heard of "Western Sahara Time" for +0:00 but can find no reference.
#
# To make things confusing, 'WAT' seems to have been used for -1:00 long ago;
# I'd guess that this was because people needed _some_ name for -1:00,
# and at the time, far west Africa was the only major land area in -1:00.
# This usage is now obsolete, as the last use of -1:00 on the African
# mainland seems to have been 1976 in Western Sahara.
#
# To summarize, the following abbreviations seem to have some currency:
#	-1:00	WAT	West Africa Time (no longer used)
#	 0:00	GMT	Greenwich Mean Time
#	 2:00	CAT	Central Africa Time
#	 2:00	SAST	South Africa Standard Time
# and Murray suggests the following abbreviation:
#	 1:00	WAT	West Africa Time
# I realize that this leads to 'WAT' being used for both -1:00 and 1:00
# for times before 1976, but this is the best I can think of
# until we get more information.
#
# I invented the following abbreviations; corrections are welcome!
#	 2:00	WAST	West Africa Summer Time
#	 2:30	BEAT	British East Africa Time (no longer used)
#	 2:45	BEAUT	British East Africa Unified Time (no longer used)
#	 3:00	CAST	Central Africa Summer Time (no longer used)
#	 3:00	SAST	South Africa Summer Time (no longer used)
#	 3:00	EAT	East Africa Time

# 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
#
# Shanks gives 1907 for the transition to CVT.
# Perhaps the 1911-05-26 Portuguese decree
# http://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	-	CVT	1942 Sep
			-2:00	1:00	CVST	1945 Oct 15
			-2:00	-	CVT	1975 Nov 25  2:00
			-1:00	-	CVT

# 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	%s

# Guinea
# See Africa/Abidjan.

# Guinea-Bissau
#
# Shanks gives 1911-05-26 for the transition to WAT,
# evidently confusing the date of the Portuguese decree
# http://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	-	WAT	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	-	BEAT	1940
			2:45	-	BEAUT	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 (2006-03-22):
# In 1972 Liberia was the last country to switch
# from a UTC offset that was not a multiple of 15 or 20 minutes.
# Howse reports that it was in honor of their president's birthday.
# Shank & Pottenger report the date as May 1, whereas Howse reports Jan;
# go with Shanks & Pottenger.
# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and
# Whitman each report -0:44:30; go with the more precise figure.
# 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 -	LRT	1972 May # Liberia Time
			 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	MU%sT	# Mauritius Time
# 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	-	WAT	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
# http://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 (2007-03-31):
# Apparently the Caprivi Strip informally observes Botswana time, but
# we have no details.  In the meantime people there can use Africa/Gaborone.

# 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	-	SWAT	1903 Mar    # SW Africa Time
			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	-	RET	# Réunion Time
#
# 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	-	SCT	# Seychelles Time
# 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.
