diff --git a/lib/modules/Calendar.pmod/TZnames.pmod b/lib/modules/Calendar.pmod/TZnames.pmod
index 0e36c57f70236f9eaf1afd8a330cf7c3ffa8ab7e..e32c30f972beb394f4d73c9da748ec9671058e10 100644
--- a/lib/modules/Calendar.pmod/TZnames.pmod
+++ b/lib/modules/Calendar.pmod/TZnames.pmod
@@ -1,11 +1,31 @@
 // ----------------------------------------------------------------
 // Timezone names
 //
-// NOTE: this file is generated by mkrules.pike;
-//       please do not edit manually /Mirar
+// this file is created half-manually
 // ----------------------------------------------------------------
 
-mapping _module_value=
+//! module Calendar
+//! submodule TZnames
+//!	This module contains listnings of available timezones,
+//!	in some different ways
+//!
+//! constant mapping(string:array(string)) zones
+//!	This constant is a mapping that can be
+//!	used to loop over to get all the region-based
+//!	timezones. 
+//!
+//!	It looks like this:
+//!	<pre>
+//!	([ "America": ({ "Los_Angeles", "Chicago", <i>[...]</i> }),
+//!	   "Europe":  ({ "Stockholm", <i>[...]</i> }),
+//!        <i>[...]</i> }),
+//!	</pre>
+//!
+//! note: 
+//!	Loading all the timezones can take some time, since
+//!	they are generated and compiled on the fly.
+
+mapping zones=
 ([
    "America":   ({"Scoresbysund","Godthab","Thule","New_York","Chicago",    
                   "Denver","Los_Angeles","Juneau","Yakutat","Anchorage",    
@@ -84,3 +104,520 @@ mapping _module_value=
                   "Hobart","Melbourne","Sydney","Broken_Hill","Lord_Howe"}),
 ]);
 
+// this is used to dwim timezone
+
+//! constant mapping(string:array(string)) abbr2zones
+//!	This mapping is used to look up abbreviation
+//!	to the possible regional zones. 
+//!
+//!	It looks like this:
+//!	<pre>
+//!	([ "CET": ({ "Europe/Stockholm", <i>[...]</i> }),
+//!	   "CST": ({ "America/Chicago", "Australia/Adelaide", <i>[...]</i> }),
+//!        <i>[...]</i> }),
+//!	</pre>
+//!
+//! note:
+//!	Just because it's noted "CST" doesn't mean it's a
+//!	unique timezone. There is about 7 *different* timezones that
+//!	uses "CST" as abbreviation; not at the same time,
+//!	though, so the DWIM routines checks this before
+//!	it's satisfied. Same with some other timezones. 
+//!
+//!     For most timezones, there is a number of region timezones that for the
+//!     given time are equal. This is because region timezones include rules
+//!     about local summer time shifts and possible historic shifts.
+
+mapping abbr2zones=
+([
+   "ACST": ({"America/Porto_Acre"}),                                           
+   "ACT": ({"America/Porto_Acre"}),                                            
+   "ADDT": ({"America/Pangnirtung"}),                                          
+   "ADMT": ({"Africa/Asmera", "Africa/Addis_Ababa"}),                          
+   "ADT": ({"Atlantic/Bermuda", "Asia/Baghdad", "America/Thule",               
+       "America/Goose_Bay", "America/Halifax", "America/Glace_Bay",       
+       "America/Pangnirtung", "America/Barbados", "America/Martinique"}), 
+   "AFT": ({"Asia/Kabul"}),                                                    
+   "AHDT": ({"America/Anchorage"}),                                            
+   "AHST": ({"America/Anchorage"}),                                            
+   "AHWT": ({"America/Anchorage"}),                                            
+   "AKDT": ({"America/Juneau", "America/Yakutat", "America/Anchorage",         
+       "America/Nome"}),                                                 
+   "AKST": ({"Asia/Aqtobe", "America/Juneau", "America/Yakutat",               
+       "America/Anchorage", "America/Nome"}),                            
+   "AKT": ({"Asia/Aqtobe"}),                                                   
+   "AKTST": ({"Asia/Aqtobe"}),                                                 
+   "AKWT": ({"America/Juneau", "America/Yakutat", "America/Anchorage",         
+       "America/Nome"}),                                                 
+   "ALMST": ({"Asia/Almaty"}),                                                 
+   "ALMT": ({"Asia/Almaty"}),                                                  
+   "AMST": ({"Asia/Yerevan", "America/Cuiaba", "America/Porto_Velho",          
+       "America/Boa_Vista", "America/Manaus"}),                          
+   "AMT": ({"Europe/Athens", "Europe/Amsterdam", "Asia/Yerevan",               
+       "Africa/Asmera", "America/Cuiaba", "America/Porto_Velho",          
+       "America/Boa_Vista", "America/Manaus", "America/Asuncion"}),       
+   "ANAMT": ({"Asia/Anadyr"}),                                                 
+   "ANAST": ({"Asia/Anadyr"}),                                                 
+   "ANAT": ({"Asia/Anadyr"}),                                                  
+   "ANT": ({"America/Aruba", "America/Curacao"}),                              
+   "AQTST": ({"Asia/Aqtobe", "Asia/Aqtau"}),                                   
+   "AQTT": ({"Asia/Aqtobe", "Asia/Aqtau"}),                                    
+   "ARST": ({"Antarctica/Palmer", "America/Buenos_Aires", "America/Rosario",   
+       "America/Cordoba", "America/Jujuy", "America/Catamarca",          
+       "America/Mendoza"}),                                              
+   "ART": ({"Antarctica/Palmer", "America/Buenos_Aires", "America/Rosario",    
+       "America/Cordoba", "America/Jujuy", "America/Catamarca",           
+       "America/Mendoza"}),                                               
+   "ASHST": ({"Asia/Ashkhabad"}),                                              
+   "ASHT": ({"Asia/Ashkhabad"}),                                               
+   "AST": ({"Atlantic/Bermuda", "Asia/Bahrain", "Asia/Baghdad", "Asia/Kuwait", 
+       "Asia/Qatar", "Asia/Riyadh", "Asia/Aden", "America/Thule",         
+       "America/Goose_Bay", "America/Halifax", "America/Glace_Bay",       
+       "America/Pangnirtung", "America/Anguilla", "America/Antigua",      
+       "America/Barbados", "America/Dominica", "America/Santo_Domingo",   
+       "America/Grenada", "America/Guadeloupe", "America/Martinique",     
+       "America/Montserrat", "America/Puerto_Rico", "America/St_Kitts",   
+       "America/St_Lucia", "America/Miquelon", "America/St_Vincent",      
+       "America/Tortola", "America/St_Thomas", "America/Aruba",           
+       "America/Curacao", "America/Port_of_Spain"}),                      
+   "AWT": ({"America/Puerto_Rico"}),                                           
+   "AZOST": ({"Atlantic/Azores"}),                                             
+   "AZOT": ({"Atlantic/Azores"}),                                              
+   "AZST": ({"Asia/Baku"}),                                                    
+   "AZT": ({"Asia/Baku"}),                                                     
+   "BAKST": ({"Asia/Baku"}),                                                   
+   "BAKT": ({"Asia/Baku"}),                                                    
+   "BDT": ({"Asia/Dacca", "America/Nome", "America/Adak"}),                    
+   "BEAT": ({"Africa/Nairobi", "Africa/Mogadishu", "Africa/Kampala"}),         
+   "BEAUT": ({"Africa/Nairobi", "Africa/Dar_es_Salaam", "Africa/Kampala"}),    
+   "BMT": ({"Europe/Brussels", "Europe/Chisinau", "Europe/Tiraspol",           
+       "Europe/Bucharest", "Europe/Zurich", "Asia/Baghdad",               
+       "Asia/Bangkok", "Africa/Banjul", "America/Barbados",               
+       "America/Bogota"}),                                                
+   "BNT": ({"Asia/Brunei"}),                                                   
+   "BORT": ({"Asia/Ujung_Pandang", "Asia/Kuching"}),                           
+   "BOST": ({"America/La_Paz"}),                                               
+   "BOT": ({"America/La_Paz"}),                                                
+   "BRST": ({"America/Belem", "America/Fortaleza", "America/Araguaina",        
+       "America/Maceio", "America/Sao_Paulo"}),                          
+   "BRT": ({"America/Belem", "America/Fortaleza", "America/Araguaina",         
+       "America/Maceio", "America/Sao_Paulo"}),                           
+   "BST": ({"Europe/London", "Europe/Belfast", "Europe/Dublin",                
+       "Europe/Gibraltar", "Pacific/Pago_Pago", "Pacific/Midway",         
+       "America/Nome", "America/Adak"}),                                  
+   "BTT": ({"Asia/Thimbu"}),                                                   
+   "BURT": ({"Asia/Dacca", "Asia/Rangoon", "Asia/Calcutta"}),                  
+   "BWT": ({"America/Nome", "America/Adak"}),                                  
+   "CANT": ({"Atlantic/Canary"}),                                              
+   "CAST": ({"Africa/Gaborone", "Africa/Khartoum"}),                           
+   "CAT": ({"Africa/Gaborone", "Africa/Bujumbura", "Africa/Lubumbashi",        
+       "Africa/Blantyre", "Africa/Maputo", "Africa/Windhoek",             
+       "Africa/Kigali", "Africa/Khartoum", "Africa/Lusaka",               
+       "Africa/Harare", "America/Anchorage"}),                            
+   "CCT": ({"Indian/Cocos"}),                                                  
+   "CDDT": ({"America/Rankin_Inlet"}),                                         
+   "CDT": ({"Asia/Harbin", "Asia/Shanghai", "Asia/Chungking", "Asia/Urumqi",   
+       "Asia/Kashgar", "Asia/Taipei", "Asia/Macao", "America/Chicago",    
+       "America/Indianapolis", "America/Indiana/Marengo",                 
+       "America/Indiana/Knox", "America/Indiana/Vevay",                   
+       "America/Louisville", "America/Menominee", "America/Rainy_River",  
+       "America/Winnipeg", "America/Pangnirtung", "America/Iqaluit",      
+       "America/Rankin_Inlet", "America/Cambridge_Bay", "America/Cancun", 
+       "America/Mexico_City", "America/Chihuahua", "America/Belize",      
+       "America/Costa_Rica", "America/Havana", "America/El_Salvador",     
+       "America/Guatemala", "America/Tegucigalpa", "America/Managua"}),   
+   "CEST": ({"Europe/Tirane", "Europe/Andorra", "Europe/Vienna",               
+       "Europe/Minsk", "Europe/Brussels", "Europe/Sofia",                
+       "Europe/Prague", "Europe/Copenhagen", "Europe/Tallinn",           
+       "Europe/Berlin", "Europe/Gibraltar", "Europe/Athens",             
+       "Europe/Budapest", "Europe/Rome", "Europe/Riga", "Europe/Vaduz",  
+       "Europe/Vilnius", "Europe/Luxembourg", "Europe/Malta",            
+       "Europe/Chisinau", "Europe/Tiraspol", "Europe/Monaco",            
+       "Europe/Amsterdam", "Europe/Oslo", "Europe/Warsaw",               
+       "Europe/Lisbon", "Europe/Kaliningrad", "Europe/Madrid",           
+       "Europe/Stockholm", "Europe/Zurich", "Europe/Kiev",               
+       "Europe/Uzhgorod", "Europe/Zaporozhye", "Europe/Simferopol",      
+       "Europe/Belgrade", "Africa/Algiers", "Africa/Tripoli",            
+       "Africa/Tunis", "Africa/Ceuta"}),                                 
+   "CET": ({"Europe/Tirane", "Europe/Andorra", "Europe/Vienna", "Europe/Minsk",
+       "Europe/Brussels", "Europe/Sofia", "Europe/Prague",                
+       "Europe/Copenhagen", "Europe/Tallinn", "Europe/Berlin",            
+       "Europe/Gibraltar", "Europe/Athens", "Europe/Budapest",            
+       "Europe/Rome", "Europe/Riga", "Europe/Vaduz", "Europe/Vilnius",    
+       "Europe/Luxembourg", "Europe/Malta", "Europe/Chisinau",            
+       "Europe/Tiraspol", "Europe/Monaco", "Europe/Amsterdam",            
+       "Europe/Oslo", "Europe/Warsaw", "Europe/Lisbon",                   
+       "Europe/Kaliningrad", "Europe/Madrid", "Europe/Stockholm",         
+       "Europe/Zurich", "Europe/Kiev", "Europe/Uzhgorod",                 
+       "Europe/Zaporozhye", "Europe/Simferopol", "Europe/Belgrade",       
+       "Africa/Algiers", "Africa/Tripoli", "Africa/Casablanca",           
+       "Africa/Tunis", "Africa/Ceuta"}),                                  
+   "CGST": ({"America/Scoresbysund"}),                                         
+   "CGT": ({"America/Scoresbysund"}),                                          
+   "CHDT": ({"America/Belize"}),                                               
+   "CHUT": ({"Asia/Chungking"}),                                               
+   "CJT": ({"Asia/Tokyo"}),                                                    
+   "CKHST": ({"Pacific/Rarotonga"}),                                           
+   "CKT": ({"Pacific/Rarotonga"}),                                             
+   "CLST": ({"Antarctica/Palmer", "America/Santiago"}),                        
+   "CLT": ({"Antarctica/Palmer", "America/Santiago"}),                         
+   "CMT": ({"Europe/Copenhagen", "Europe/Chisinau", "Europe/Tiraspol",         
+       "America/St_Lucia", "America/Buenos_Aires", "America/Rosario",     
+       "America/Cordoba", "America/Jujuy", "America/Catamarca",           
+       "America/Mendoza", "America/Caracas"}),                            
+   "COST": ({"America/Bogota"}),                                               
+   "COT": ({"America/Bogota"}),                                                
+   "CST": ({"Asia/Harbin", "Asia/Shanghai", "Asia/Chungking", "Asia/Urumqi",   
+       "Asia/Kashgar", "Asia/Taipei", "Asia/Macao", "Asia/Jayapura",      
+       "Australia/Darwin", "Australia/Adelaide", "Australia/Broken_Hill", 
+       "America/Chicago", "America/Indianapolis",                         
+       "America/Indiana/Marengo", "America/Indiana/Knox",                 
+       "America/Indiana/Vevay", "America/Louisville", "America/Detroit",  
+       "America/Menominee", "America/Rainy_River", "America/Winnipeg",    
+       "America/Regina", "America/Swift_Current", "America/Pangnirtung",  
+       "America/Iqaluit", "America/Rankin_Inlet", "America/Cambridge_Bay",
+       "America/Cancun", "America/Mexico_City", "America/Chihuahua",      
+       "America/Hermosillo", "America/Mazatlan", "America/Belize",        
+       "America/Costa_Rica", "America/Havana", "America/El_Salvador",     
+       "America/Guatemala", "America/Tegucigalpa", "America/Managua"}),   
+   "CUT": ({"Europe/Zaporozhye"}),                                             
+   "CVST": ({"Atlantic/Cape_Verde"}),                                          
+   "CVT": ({"Atlantic/Cape_Verde"}),                                           
+   "CWT": ({"America/Chicago", "America/Indianapolis",                         
+       "America/Indiana/Marengo", "America/Indiana/Knox",                 
+       "America/Indiana/Vevay", "America/Louisville",                     
+       "America/Menominee"}),                                             
+   "CXT": ({"Indian/Christmas"}),                                              
+   "DACT": ({"Asia/Dacca"}),                                                   
+   "DAVT": ({"Antarctica/Davis"}),                                             
+   "DDUT": ({"Antarctica/DumontDUrville"}),                                    
+   "DMT": ({"Europe/Belfast", "Europe/Dublin"}),                               
+   "DUSST": ({"Asia/Dushanbe"}),                                               
+   "DUST": ({"Asia/Dushanbe"}),                                                
+   "EASST": ({"Pacific/Easter"}),                                              
+   "EAST": ({"Indian/Antananarivo", "Pacific/Easter"}),                        
+   "EAT": ({"Indian/Comoro", "Indian/Antananarivo", "Indian/Mayotte",          
+       "Africa/Djibouti", "Africa/Asmera", "Africa/Addis_Ababa",          
+       "Africa/Nairobi", "Africa/Mogadishu", "Africa/Khartoum",           
+       "Africa/Dar_es_Salaam", "Africa/Kampala"}),                        
+   "ECT": ({"Pacific/Galapagos", "America/Guayaquil"}),                        
+   "EDDT": ({"America/Iqaluit"}),                                              
+   "EDT": ({"America/New_York", "America/Indianapolis",                        
+       "America/Indiana/Marengo", "America/Indiana/Vevay",                
+       "America/Louisville", "America/Detroit", "America/Montreal",       
+       "America/Thunder_Bay", "America/Nipigon", "America/Pangnirtung",   
+       "America/Iqaluit", "America/Cancun", "America/Nassau",             
+       "America/Santo_Domingo", "America/Port-au-Prince",                 
+       "America/Jamaica", "America/Grand_Turk"}),                         
+   "EEMT": ({"Europe/Minsk", "Europe/Chisinau", "Europe/Tiraspol",             
+       "Europe/Kaliningrad", "Europe/Moscow"}),                          
+   "EEST": ({"Europe/Minsk", "Europe/Sofia", "Europe/Tallinn",                 
+       "Europe/Helsinki", "Europe/Athens", "Europe/Riga",                
+       "Europe/Vilnius", "Europe/Chisinau", "Europe/Tiraspol",           
+       "Europe/Warsaw", "Europe/Bucharest", "Europe/Kaliningrad",        
+       "Europe/Moscow", "Europe/Istanbul", "Europe/Kiev",                
+       "Europe/Uzhgorod", "Europe/Zaporozhye", "Asia/Nicosia",           
+       "Asia/Amman", "Asia/Beirut", "Asia/Gaza", "Asia/Damascus",        
+       "Africa/Cairo"}),                                                 
+   "EET": ({"Europe/Minsk", "Europe/Sofia", "Europe/Tallinn",                  
+       "Europe/Helsinki", "Europe/Athens", "Europe/Riga",                 
+       "Europe/Vilnius", "Europe/Chisinau", "Europe/Tiraspol",            
+       "Europe/Warsaw", "Europe/Bucharest", "Europe/Kaliningrad",         
+       "Europe/Moscow", "Europe/Istanbul", "Europe/Kiev",                 
+       "Europe/Uzhgorod", "Europe/Zaporozhye", "Europe/Simferopol",       
+       "Asia/Nicosia", "Asia/Amman", "Asia/Beirut", "Asia/Gaza",          
+       "Asia/Damascus", "Africa/Cairo", "Africa/Tripoli"}),               
+   "EGST": ({"America/Scoresbysund"}),                                         
+   "EGT": ({"Atlantic/Jan_Mayen", "America/Scoresbysund"}),                    
+   "EHDT": ({"America/Santo_Domingo"}),                                        
+   "EST": ({"Australia/Brisbane", "Australia/Lindeman", "Australia/Hobart",    
+       "Australia/Melbourne", "Australia/Sydney", "Australia/Broken_Hill",
+       "Australia/Lord_Howe", "America/New_York", "America/Chicago",      
+       "America/Indianapolis", "America/Indiana/Marengo",                 
+       "America/Indiana/Knox", "America/Indiana/Vevay",                   
+       "America/Louisville", "America/Detroit", "America/Menominee",      
+       "America/Montreal", "America/Thunder_Bay", "America/Nipigon",      
+       "America/Pangnirtung", "America/Iqaluit", "America/Cancun",        
+       "America/Antigua", "America/Nassau", "America/Cayman",             
+       "America/Santo_Domingo", "America/Port-au-Prince",                 
+       "America/Jamaica", "America/Managua", "America/Panama",            
+       "America/Grand_Turk"}),                                            
+   "EWT": ({"America/New_York", "America/Indianapolis",                        
+       "America/Indiana/Marengo", "America/Indiana/Vevay",                
+       "America/Louisville", "America/Detroit", "America/Jamaica"}),      
+   "FFMT": ({"America/Martinique"}),                                           
+   "FJST": ({"Pacific/Fiji"}),                                                 
+   "FJT": ({"Pacific/Fiji"}),                                                  
+   "FKST": ({"Atlantic/Stanley"}),                                             
+   "FKT": ({"Atlantic/Stanley"}),                                              
+   "FMT": ({"Atlantic/Madeira", "Africa/Freetown"}),                           
+   "FNST": ({"America/Noronha"}),                                              
+   "FNT": ({"America/Noronha"}),                                               
+   "FRUST": ({"Asia/Bishkek"}),                                                
+   "FRUT": ({"Asia/Bishkek"}),                                                 
+   "GALT": ({"Pacific/Galapagos"}),                                            
+   "GAMT": ({"Pacific/Gambier"}),                                              
+   "GBGT": ({"America/Guyana"}),                                               
+   "GEST": ({"Asia/Tbilisi"}),                                                 
+   "GET": ({"Asia/Tbilisi"}),                                                  
+   "GFT": ({"America/Cayenne"}),                                               
+   "GHST": ({"Africa/Accra"}),                                                 
+   "GILT": ({"Pacific/Tarawa"}),                                               
+   "GMT": ({"Atlantic/St_Helena", "Atlantic/Reykjavik", "Europe/London",       
+       "Europe/Belfast", "Europe/Dublin", "Europe/Gibraltar",             
+       "Africa/Porto-Novo", "Africa/Ouagadougou", "Africa/Abidjan",       
+       "Africa/Malabo", "Africa/Banjul", "Africa/Accra", "Africa/Conakry",
+       "Africa/Bissau", "Africa/Monrovia", "Africa/Bamako",               
+       "Africa/Timbuktu", "Africa/Nouakchott", "Africa/Niamey",           
+       "Africa/Sao_Tome", "Africa/Dakar", "Africa/Freetown",              
+       "Africa/Lome"}),                                                   
+   "GST": ({"Atlantic/South_Georgia", "Asia/Bahrain", "Asia/Muscat",           
+       "Asia/Qatar", "Asia/Dubai", "Pacific/Guam"}),                      
+   "GYT": ({"America/Guyana"}),                                                
+   "HADT": ({"America/Adak"}),                                                 
+   "HART": ({"Asia/Harbin"}),                                                  
+   "HAST": ({"America/Adak"}),                                                 
+   "HAWT": ({"America/Adak"}),                                                 
+   "HDT": ({"Pacific/Honolulu"}),                                              
+   "HKST": ({"Asia/Hong_Kong"}),                                               
+   "HKT": ({"Asia/Hong_Kong"}),                                                
+   "HMT": ({"Atlantic/Azores", "Europe/Helsinki", "Asia/Dacca",                
+       "Asia/Calcutta", "America/Havana"}),                               
+   "HOVST": ({"Asia/Hovd"}),                                                   
+   "HOVT": ({"Asia/Hovd"}),                                                    
+   "HST": ({"Pacific/Johnston", "Pacific/Honolulu"}),                          
+   "HWT": ({"Pacific/Honolulu"}),                                              
+   "ICT": ({"Asia/Phnom_Penh", "Asia/Vientiane", "Asia/Bangkok",               
+       "Asia/Saigon"}),                                                   
+   "IDDT": ({"Asia/Jerusalem", "Asia/Gaza"}),                                  
+   "IDT": ({"Asia/Jerusalem", "Asia/Gaza"}),                                   
+   "IHST": ({"Asia/Colombo"}),                                                 
+   "IMT": ({"Europe/Sofia", "Europe/Istanbul", "Asia/Irkutsk"}),               
+   "IOT": ({"Indian/Chagos"}),                                                 
+   "IRKMT": ({"Asia/Irkutsk"}),                                                
+   "IRKST": ({"Asia/Irkutsk"}),                                                
+   "IRKT": ({"Asia/Irkutsk"}),                                                 
+   "IRST": ({"Asia/Tehran"}),                                                  
+   "IRT": ({"Asia/Tehran"}),                                                   
+   "ISST": ({"Atlantic/Reykjavik"}),                                           
+   "IST": ({"Atlantic/Reykjavik", "Europe/Belfast", "Europe/Dublin",           
+       "Asia/Dacca", "Asia/Thimbu", "Asia/Calcutta", "Asia/Jerusalem",    
+       "Asia/Katmandu", "Asia/Karachi", "Asia/Gaza", "Asia/Colombo"}),    
+   "JAYT": ({"Asia/Jayapura"}),                                                
+   "JMT": ({"Atlantic/St_Helena", "Asia/Jerusalem"}),                          
+   "JST": ({"Asia/Rangoon", "Asia/Dili", "Asia/Ujung_Pandang", "Asia/Tokyo",   
+       "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Manila",                
+       "Asia/Singapore", "Pacific/Nauru"}),                               
+   "KART": ({"Asia/Karachi"}),                                                 
+   "KAST": ({"Asia/Kashgar"}),                                                 
+   "KDT": ({"Asia/Seoul"}),                                                    
+   "KGST": ({"Asia/Bishkek"}),                                                 
+   "KGT": ({"Asia/Bishkek"}),                                                  
+   "KMT": ({"Europe/Vilnius", "Europe/Kiev", "America/Cayman",                 
+       "America/Jamaica", "America/St_Vincent", "America/Grand_Turk"}),   
+   "KOST": ({"Pacific/Kosrae"}),                                               
+   "KRAMT": ({"Asia/Krasnoyarsk"}),                                            
+   "KRAST": ({"Asia/Krasnoyarsk"}),                                            
+   "KRAT": ({"Asia/Krasnoyarsk"}),                                             
+   "KST": ({"Asia/Seoul", "Asia/Pyongyang"}),                                  
+   "KUYMT": ({"Europe/Samara"}),                                               
+   "KUYST": ({"Europe/Samara"}),                                               
+   "KUYT": ({"Europe/Samara"}),                                                
+   "KWAT": ({"Pacific/Kwajalein"}),                                            
+   "LHST": ({"Australia/Lord_Howe"}),                                          
+   "LINT": ({"Pacific/Kiritimati"}),                                           
+   "LKT": ({"Asia/Colombo"}),                                                  
+   "LPMT": ({"America/La_Paz"}),                                               
+   "LRT": ({"Africa/Monrovia"}),                                               
+   "LST": ({"Europe/Riga"}),                                                   
+   "M": ({"Europe/Moscow"}),                                                   
+   "MADST": ({"Atlantic/Madeira"}),                                            
+   "MAGMT": ({"Asia/Magadan"}),                                                
+   "MAGST": ({"Asia/Magadan"}),                                                
+   "MAGT": ({"Asia/Magadan"}),                                                 
+   "MALT": ({"Asia/Kuala_Lumpur", "Asia/Singapore"}),                          
+   "MART": ({"Pacific/Marquesas"}),                                            
+   "MAWT": ({"Antarctica/Mawson"}),                                            
+   "MDDT": ({"America/Cambridge_Bay", "America/Yellowknife",                   
+       "America/Inuvik"}),                                               
+   "MDST": ({"Europe/Moscow"}),                                                
+   "MDT": ({"America/Denver", "America/Phoenix", "America/Boise",              
+       "America/Regina", "America/Swift_Current", "America/Edmonton",     
+       "America/Cambridge_Bay", "America/Yellowknife", "America/Inuvik",  
+       "America/Chihuahua", "America/Hermosillo", "America/Mazatlan"}),   
+   "MHT": ({"Pacific/Majuro", "Pacific/Kwajalein"}),                           
+   "MMT": ({"Indian/Maldives", "Europe/Minsk", "Europe/Moscow", "Asia/Rangoon",
+       "Asia/Ujung_Pandang", "Asia/Colombo", "Pacific/Easter",            
+       "Africa/Monrovia", "America/Managua", "America/Montevideo"}),      
+   "MOST": ({"Asia/Macao"}),                                                   
+   "MOT": ({"Asia/Macao"}),                                                    
+   "MPT": ({"Pacific/Saipan"}),                                                
+   "MSK": ({"Europe/Minsk", "Europe/Tallinn", "Europe/Riga", "Europe/Vilnius", 
+       "Europe/Chisinau", "Europe/Kiev", "Europe/Uzhgorod",               
+       "Europe/Zaporozhye", "Europe/Simferopol"}),                        
+   "MST": ({"Europe/Moscow", "America/Denver", "America/Phoenix",              
+       "America/Boise", "America/Regina", "America/Swift_Current",        
+       "America/Edmonton", "America/Dawson_Creek",                        
+       "America/Cambridge_Bay", "America/Yellowknife", "America/Inuvik",  
+       "America/Mexico_City", "America/Chihuahua", "America/Hermosillo",  
+       "America/Mazatlan", "America/Tijuana"}),                           
+   "MUT": ({"Indian/Mauritius"}),                                              
+   "MVT": ({"Indian/Maldives"}),                                               
+   "MWT": ({"America/Denver", "America/Phoenix", "America/Boise"}),            
+   "MYT": ({"Asia/Kuala_Lumpur", "Asia/Kuching"}),                             
+   "NCST": ({"Pacific/Noumea"}),                                               
+   "NCT": ({"Pacific/Noumea"}),                                                
+   "NDT": ({"America/Nome", "America/Adak", "America/St_Johns",                
+       "America/Goose_Bay"}),                                             
+   "NEGT": ({"America/Paramaribo"}),                                           
+   "NFT": ({"Pacific/Norfolk"}),                                               
+   "NMT": ({"Pacific/Norfolk"}),                                               
+   "NOVMT": ({"Asia/Novosibirsk"}),                                            
+   "NOVST": ({"Asia/Novosibirsk"}),                                            
+   "NOVT": ({"Asia/Novosibirsk"}),                                             
+   "NPT": ({"Asia/Katmandu"}),                                                 
+   "NRT": ({"Pacific/Nauru"}),                                                 
+   "NST": ({"Europe/Amsterdam", "Pacific/Pago_Pago", "Pacific/Midway",         
+       "America/Nome", "America/Adak", "America/St_Johns",                
+       "America/Goose_Bay"}),                                             
+   "NUT": ({"Pacific/Niue"}),                                                  
+   "NWT": ({"America/Nome", "America/Adak"}),                                  
+   "NZDT": ({"Antarctica/McMurdo"}),                                           
+   "NZHDT": ({"Pacific/Auckland"}),                                            
+   "NZST": ({"Antarctica/McMurdo", "Pacific/Auckland"}),                       
+   "OMSMT": ({"Asia/Omsk"}),                                                   
+   "OMSST": ({"Asia/Omsk"}),                                                   
+   "OMST": ({"Asia/Omsk"}),                                                    
+   "PDDT": ({"America/Inuvik", "America/Whitehorse", "America/Dawson"}),       
+   "PDT": ({"America/Los_Angeles", "America/Juneau", "America/Boise",          
+       "America/Vancouver", "America/Dawson_Creek", "America/Inuvik",     
+       "America/Whitehorse", "America/Dawson", "America/Tijuana"}),       
+   "PEST": ({"America/Lima"}),                                                 
+   "PET": ({"America/Lima"}),                                                  
+   "PETMT": ({"Asia/Kamchatka"}),                                              
+   "PETST": ({"Asia/Kamchatka"}),                                              
+   "PETT": ({"Asia/Kamchatka"}),                                               
+   "PGT": ({"Pacific/Port_Moresby"}),                                          
+   "PHOT": ({"Pacific/Enderbury"}),                                            
+   "PHST": ({"Asia/Manila"}),                                                  
+   "PHT": ({"Asia/Manila"}),                                                   
+   "PKT": ({"Asia/Karachi"}),                                                  
+   "PMDT": ({"America/Miquelon"}),                                             
+   "PMMT": ({"Pacific/Port_Moresby"}),                                         
+   "PMST": ({"America/Miquelon"}),                                             
+   "PMT": ({"Antarctica/DumontDUrville", "Europe/Prague", "Europe/Paris",      
+       "Europe/Monaco", "Africa/Algiers", "Africa/Tunis",                 
+       "America/Panama", "America/Paramaribo"}),                          
+   "PNT": ({"Pacific/Pitcairn"}),                                              
+   "PONT": ({"Pacific/Ponape"}),                                               
+   "PPMT": ({"America/Port-au-Prince"}),                                       
+   "PST": ({"Pacific/Pitcairn", "America/Los_Angeles", "America/Juneau",       
+       "America/Boise", "America/Vancouver", "America/Dawson_Creek",      
+       "America/Inuvik", "America/Whitehorse", "America/Dawson",          
+       "America/Hermosillo", "America/Mazatlan", "America/Tijuana"}),     
+   "PWT": ({"Pacific/Palau", "America/Los_Angeles", "America/Juneau",          
+       "America/Boise", "America/Tijuana"}),                              
+   "PYST": ({"America/Asuncion"}),                                             
+   "PYT": ({"America/Asuncion"}),                                              
+   "QMT": ({"America/Guayaquil"}),                                             
+   "RET": ({"Indian/Reunion"}),                                                
+   "RMT": ({"Atlantic/Reykjavik", "Europe/Rome", "Europe/Riga",                
+       "Asia/Rangoon"}),                                                  
+   "S": ({"Europe/Moscow"}),                                                   
+   "SAMMT": ({"Europe/Samara"}),                                               
+   "SAMST": ({"Europe/Samara", "Asia/Samarkand"}),                             
+   "SAMT": ({"Europe/Samara", "Asia/Samarkand", "Pacific/Pago_Pago",           
+       "Pacific/Apia"}),                                                 
+   "SAST": ({"Africa/Maseru", "Africa/Windhoek", "Africa/Johannesburg",        
+       "Africa/Mbabane"}),                                               
+   "SBT": ({"Pacific/Guadalcanal"}),                                           
+   "SCT": ({"Indian/Mahe"}),                                                   
+   "SDMT": ({"America/Santo_Domingo"}),                                        
+   "SGT": ({"Asia/Singapore"}),                                                
+   "SHEST": ({"Asia/Aqtau"}),                                                  
+   "SHET": ({"Asia/Aqtau"}),                                                   
+   "SJMT": ({"America/Costa_Rica"}),                                           
+   "SLST": ({"Africa/Freetown"}),                                              
+   "SMT": ({"Atlantic/Stanley", "Europe/Stockholm", "Europe/Simferopol",       
+       "Asia/Phnom_Penh", "Asia/Vientiane", "Asia/Kuala_Lumpur",          
+       "Asia/Singapore", "Asia/Saigon", "America/Santiago"}),             
+   "SRT": ({"America/Paramaribo"}),                                            
+   "SST": ({"Pacific/Pago_Pago", "Pacific/Midway"}),                           
+   "SVEMT": ({"Asia/Yekaterinburg"}),                                          
+   "SVEST": ({"Asia/Yekaterinburg"}),                                          
+   "SVET": ({"Asia/Yekaterinburg"}),                                           
+   "SWAT": ({"Africa/Windhoek"}),                                              
+   "SYOT": ({"Antarctica/Syowa"}),                                             
+   "TAHT": ({"Pacific/Tahiti"}),                                               
+   "TASST": ({"Asia/Samarkand", "Asia/Tashkent"}),                             
+   "TAST": ({"Asia/Samarkand", "Asia/Tashkent"}),                              
+   "TBIST": ({"Asia/Tbilisi"}),                                                
+   "TBIT": ({"Asia/Tbilisi"}),                                                 
+   "TBMT": ({"Asia/Tbilisi"}),                                                 
+   "TFT": ({"Indian/Kerguelen"}),                                              
+   "TJT": ({"Asia/Dushanbe"}),                                                 
+   "TKT": ({"Pacific/Fakaofo"}),                                               
+   "TMST": ({"Asia/Ashkhabad"}),                                               
+   "TMT": ({"Europe/Tallinn", "Asia/Tehran", "Asia/Ashkhabad"}),               
+   "TOST": ({"Pacific/Tongatapu"}),                                            
+   "TOT": ({"Pacific/Tongatapu"}),                                             
+   "TPT": ({"Asia/Dili"}),                                                     
+   "TRST": ({"Europe/Istanbul"}),                                              
+   "TRT": ({"Europe/Istanbul"}),                                               
+   "TRUT": ({"Pacific/Truk"}),                                                 
+   "TVT": ({"Pacific/Funafuti"}),                                              
+   "ULAST": ({"Asia/Ulaanbaatar"}),                                            
+   "ULAT": ({"Asia/Ulaanbaatar"}),                                             
+   "URUT": ({"Asia/Urumqi"}),                                                  
+   "UYHST": ({"America/Montevideo"}),                                          
+   "UYT": ({"America/Montevideo"}),                                            
+   "UZST": ({"Asia/Samarkand", "Asia/Tashkent"}),                              
+   "UZT": ({"Asia/Samarkand", "Asia/Tashkent"}),                               
+   "VET": ({"America/Caracas"}),                                               
+   "VLAMT": ({"Asia/Vladivostok"}),                                            
+   "VLAST": ({"Asia/Vladivostok"}),                                            
+   "VLAT": ({"Asia/Vladivostok"}),                                             
+   "VUST": ({"Pacific/Efate"}),                                                
+   "VUT": ({"Pacific/Efate"}),                                                 
+   "WAKT": ({"Pacific/Wake"}),                                                 
+   "WARST": ({"America/Jujuy", "America/Mendoza"}),                            
+   "WART": ({"America/Jujuy", "America/Mendoza"}),                             
+   "WAST": ({"Africa/Ndjamena", "Africa/Windhoek"}),                           
+   "WAT": ({"Africa/Luanda", "Africa/Porto-Novo", "Africa/Douala",             
+       "Africa/Bangui", "Africa/Ndjamena", "Africa/Kinshasa",             
+       "Africa/Brazzaville", "Africa/Malabo", "Africa/Libreville",        
+       "Africa/Banjul", "Africa/Conakry", "Africa/Bissau",                
+       "Africa/Bamako", "Africa/Nouakchott", "Africa/El_Aaiun",           
+       "Africa/Windhoek", "Africa/Niamey", "Africa/Lagos", "Africa/Dakar",
+       "Africa/Freetown"}),                                               
+   "WEST": ({"Atlantic/Faeroe", "Atlantic/Azores", "Atlantic/Madeira",         
+       "Atlantic/Canary", "Europe/Brussels", "Europe/Luxembourg",        
+       "Europe/Monaco", "Europe/Lisbon", "Europe/Madrid",                
+       "Africa/Algiers", "Africa/Casablanca", "Africa/Ceuta"}),          
+   "WET": ({"Atlantic/Faeroe", "Atlantic/Azores", "Atlantic/Madeira",          
+       "Atlantic/Canary", "Europe/Andorra", "Europe/Brussels",            
+       "Europe/Luxembourg", "Europe/Monaco", "Europe/Lisbon",             
+       "Europe/Madrid", "Africa/Algiers", "Africa/Casablanca",            
+       "Africa/El_Aaiun", "Africa/Ceuta"}),                               
+   "WFT": ({"Pacific/Wallis"}),                                                
+   "WGST": ({"America/Godthab"}),                                              
+   "WGT": ({"America/Godthab"}),                                               
+   "WMT": ({"Europe/Vilnius", "Europe/Warsaw"}),                               
+   "WST": ({"Antarctica/Casey", "Pacific/Apia", "Australia/Perth"}),           
+   "YAKMT": ({"Asia/Yakutsk"}),                                                
+   "YAKST": ({"Asia/Yakutsk"}),                                                
+   "YAKT": ({"Asia/Yakutsk"}),                                                 
+   "YAPT": ({"Pacific/Yap"}),                                                  
+   "YDDT": ({"America/Whitehorse", "America/Dawson"}),                         
+   "YDT": ({"America/Yakutat", "America/Whitehorse", "America/Dawson"}),       
+   "YEKMT": ({"Asia/Yekaterinburg"}),                                          
+   "YEKST": ({"Asia/Yekaterinburg"}),                                          
+   "YEKT": ({"Asia/Yekaterinburg"}),                                           
+   "YERST": ({"Asia/Yerevan"}),                                                
+   "YERT": ({"Asia/Yerevan"}),                                                 
+   "YST": ({"America/Yakutat", "America/Whitehorse", "America/Dawson"}),       
+   "YWT": ({"America/Yakutat"}),                                               
+   "___": ({"Antarctica/Casey", "Antarctica/Davis", "Antarctica/Mawson",       
+       "Antarctica/DumontDUrville", "Antarctica/Syowa",                   
+       "Antarctica/Palmer", "Antarctica/McMurdo", "Indian/Kerguelen"}),   
+]);
diff --git a/lib/modules/Calendar.pmod/Timezone.pmod b/lib/modules/Calendar.pmod/Timezone.pmod
index fa1735b8ec9a0beee1987e7ceaa3f56660a45c5c..9084742eff7d878a6bd4696d453c2dcc8b91a321 100644
--- a/lib/modules/Calendar.pmod/Timezone.pmod
+++ b/lib/modules/Calendar.pmod/Timezone.pmod
@@ -201,11 +201,12 @@ static private Ruleset.Timezone _magic_timezone(string tz)
    if (!runtime_timezone_compiler)
       runtime_timezone_compiler=Runtime_timezone_compiler();
 
-   int t=time(1);
-   float t1=time(t);
+//     int t=time(1);
+//     float t1=time(t);
+//     runtime_timezone_compiler->find_rule("EU");
    object p=runtime_timezone_compiler->find_zone(tz);
-   float t2=time(t);
-   werror("%O\n",t2-t1);
+//     float t2=time(t);
+//     werror("%O\n",t2-t1);
    if (p) return p;
 
    if (sscanf(tz,"%s+%f",z,d)==2)
@@ -543,7 +544,7 @@ class Runtime_timezone_compiler
 	 mapping r2=([]);
 	 Shift last=Shift(({"0","?",0,"u",0,"?"}));
 	 Shift first=last;
-	 string res="";
+	 array res=({});
 
 	 if (!r2[NUL_YEAR]) r2[NUL_YEAR]=({last});
 
@@ -551,19 +552,17 @@ class Runtime_timezone_compiler
 	 for (;y<=INF_YEAR; y++)
 	    [r2[y],last]=mkperiods(rules[y],last,first);
 
-	 werror("%O\n",last);
-
 	 res+=
-	    TZrules_init+
-	    "import __Calendar_mkzone;\n"
-	    "   inherit TZRules;\n"
-	    "   array(array(string|int)) jd_year_periods(int jd)\n"
-	    "   {\n"
-	    "      [int y,int yjd,int leap]=gregorian_yjd(jd);\n"
-	    "      switch (y)\n"
-	    "      {\n";
+	    ({TZrules_init+
+	      "import __Calendar_mkzone;\n"
+	      "   inherit TZRules;\n"
+	      "   array(array(string|int)) jd_year_periods(int jd)\n"
+	      "   {\n"
+	      "      [int y,int yjd,int leap]=gregorian_yjd(jd);\n"
+	      "      switch (y)\n"
+	      "      {\n"});
 
-	 string s="",t;
+	 array sr=({});
 
 	 int y,mn=min(@indices(rules-(<NUL_YEAR>)));
 
@@ -579,7 +578,7 @@ class Runtime_timezone_compiler
 
 	       foreach ((array)my,int y2) m_delete(r2,y2);
 
-	       string t="";
+	       array tr=({});
 
 	       int y0=min(@(array)my);
 	       int y2=max(@(array)my);
@@ -594,54 +593,54 @@ class Runtime_timezone_compiler
 		     if (y0==NUL_YEAR)
 		     {
 			if (my[INF_YEAR])
-			   t+="         default: // .."+max(y1,mn-1)+
-			      " and ���..\n";
+			   tr+=({"         default: // .."+max(y1,mn-1),
+				  " and ���..\n"});
 			else
-			   t+="         default: // .."+max(y1,mn-1)+":\n";
+			   tr+=({"         default: // .."+max(y1,mn-1),
+				  ":\n"});
 		     }
 		     else if (y0==y1)
-			t+="         case "+y0+":\n";
+			tr+=({"         case "+y0+":\n"});
 		     else if (y1==2050)
 		     { 
-			if (!my[NUL_YEAR]) t+="         case "+y0+"..:\n"; 
-			else t=replace(t,"���",(string)y0); 
+			if (!my[NUL_YEAR]) 
+			   tr+=({"         case "+y0,"..:\n"}); 
+			else 
+			   tr[0]=replace(tr[0],"���",(string)y0); 
 		     }
 		     else 		  
-			t+="         case "+y0+".."+y1+":\n";
+			tr+=({"         case "+y0,".."+y1+":\n"});
 
 		     y0=y1;
 		  }
 
 	       int lastoffset=0;
-	       string res=" "*12+"return ({";
+	       tr+=({" "*12,"return ({"});
 	       foreach (z,Shift s)
 	       {
-		  res+=s->dump(lastoffset,my)+("\n"+" "*21);
+		  tr+=({s->dump(lastoffset,my),"\n"," "*21});
 		  lastoffset=s->offset;
 	       }
-	       array resa=res/"\n";
-	       resa[-2]=replace(resa[-2],",  ","});");
-	 
-	       t+=resa[..sizeof(resa)-2]*"\n"+"\n";
-	       s=t+s;
+	       tr[-3]=replace(tr[-3],",  ","});");
+	       sr=tr[..sizeof(tr)-2]+sr;
 	    }
-	 res+=(s+
-	       "      }\n"
-	       "   }\n");
-
-	 res+=("\n"
-	       "array(string) rule_s=\n");
+	 res+=sr+
+	 ({"      }\n"
+	   "   }\n"
+	   "\n"
+	   "array(string) rule_s=\n"});
 
 	 multiset tzname=(<>);
 	 foreach (values(rules),array(Shift)|object(Shift) s)
 	    if (arrayp(s)) foreach (s,Shift s) tzname[s->s]=1;
 	    else  tzname[s->s]=1;
 
-	 res+=("({"+map((array)tzname,
-			lambda(string s) { return sprintf("%O",s); })*","
-	       +"});\n");
+	 res+=({"({",map((array)tzname,
+			 lambda(string s) { return sprintf("%O",s); })*",",
+		"});\n",
+		sprintf("string name=%O;\n",id)});
 
-	 return res;
+	 return res*"";
       }
 
       int join_periods(array s,array t,int y0,int y1)
@@ -796,20 +795,17 @@ class Runtime_timezone_compiler
 
       string dump()
       {
-	 string res="";
+	 array(string) res=({});
 
 	 if (!sizeof(rules))
-	 {
-	    res+=("// skipped %O due to errors\n",id);
-	    return res;
-	 }
+	    error("no rules for %O\n",id);
 	       
-	 res+="import __Calendar_mkzone;\n";
+	 res+=({"import __Calendar_mkzone;\n"});
 
 	 if (sizeof(rules)==1) // simple zone
 	 {
-	    res+=("object thezone="+rules[0][4]+";\n");
-	    return res;
+	    res+=({"object thezone=",rules[0][4],";\n"});
+	    return res*"";
 	 }
 
 	 mapping rname=([]);
@@ -819,11 +815,11 @@ class Runtime_timezone_compiler
 	    if (rname[a[4]]) a[6]=rname[a[4]];
 	    else a[6]=rname[a[4]]="tz"+n++;
       
-	 res+=( "inherit TZHistory;\n"
-		"Ruleset.Timezone "+
-		sort(values(rname))*","+";\n"
-		"Ruleset.Timezone whatrule(int ux)\n"
-		"{\n" );
+	 res+=({ "inherit TZHistory;\n"
+		 "Ruleset.Timezone ",
+		 sort(values(rname))*",",";\n"
+		 "Ruleset.Timezone whatrule(int ux)\n"
+		 "{\n" });
 
 	 foreach (rules,array a)
 	 {
@@ -838,17 +834,16 @@ class Runtime_timezone_compiler
 	 array last=rules[-1];
 	 foreach (reverse(rules)[1..],array a)
 	 {
-	    res+=sprintf("   if (ux>=%s) // %s %s\n"
-			 "      return %s || (%s=%s);\n",
-			 a[5],a[3],last[7],last[6],last[6],last[4]);
+	    res+=({sprintf("   if (ux>=%s) // %s %s\n"
+			   "      return %s || (%s=%s);\n",
+			   a[5],a[3],last[7],last[6],last[6],last[4])});
 	    last=a;
 	 }
 	 if (last[7]!="")
-	    res+=sprintf("   // %s\n",last[7]);
-	 res+=sprintf("   return %s || (%s=%s);\n",
-		      last[6],last[6],last[4]);
-
-	 res+=("}\n");
+	    res+=({sprintf("   // %s\n",last[7])});
+	 res+=({sprintf("   return %s || (%s=%s);\n",
+			last[6],last[6],last[4])+
+		"}\n"});
 
 	 multiset tzname=(<>);
 	 foreach (rules,array a)
@@ -861,19 +856,16 @@ class Runtime_timezone_compiler
 		  tzname[sprintf(a[2],s)]=1;
 	    }
 
-	 res+=("array(string) zone_s=({"+map((array)tzname,
-			lambda(string s) { return sprintf("%O",s); })*","
-	       +"});\n");
-      
-	 res+="array(int) shifts=({";
+	 res+=({"array(string) zone_s=({"+
+		map((array)tzname,
+		    lambda(string s) { return sprintf("%O",s); })*",",
+		"});\n",
+		"array(int) shifts=({"});
 	 foreach (rules[..sizeof(rules)-2],array a)
-	 {
-	    res+=a[5]+",";
-	 }
-	 res+="});\n";
-	 
+	    res+=({a[5]+","});
+	 res+=({"});\n"});
 
-	 return res;
+	 return res*"";
       }
    }
 
@@ -888,6 +880,7 @@ class Runtime_timezone_compiler
       "etcetera",
       "europe",
       "northamerica",
+      "southamerica",
       "pacificnew",
       "systemv",
    });
@@ -921,7 +914,8 @@ class Runtime_timezone_compiler
      "Ruleset":Ruleset,
      "ZEROSHIFT":({0,0,0,""})]);
 
-#define RTTZC_DEBUG
+//  #define RTTZC_DEBUG
+//  #define RTTZC_TIMING
 
    object find_zone(string s)
    {
@@ -932,7 +926,7 @@ class Runtime_timezone_compiler
 
       if (!all_rules) all_rules=get_all_rules();
 
-#ifdef RTTZC_DEBUG
+#ifdef RTTZC_TIMING
       int t=time(1);
       float t1=time(t);
 #endif
@@ -972,13 +966,19 @@ class Runtime_timezone_compiler
 	    return find_zone(a);
 	 n++;
       }
-      string c=z->dump();
-
-#ifdef RTTZC_DEBUG
+#ifdef RTTZC_TIMING
       float t2=time(t);
       werror("find %O: %O\n",s,t2-t1);
 #endif
 
+      string c=z->dump();
+
+#ifdef RTTZC_TIMING
+      float td=time(t);
+      werror("dump %O: %O\n",s,td-t2);
+      float td=time(t);
+#endif
+
 #ifdef RTTZC_DEBUG
       werror("%s\n",c);
 #endif
@@ -989,14 +989,16 @@ class Runtime_timezone_compiler
       object zo=p();
       if (zo->thezone) zo=zo->thezone;
 
-#ifdef RTTZC_DEBUG
+#ifdef RTTZC_TIMING
       float t3=time(t);
-      werror("compile %O: %O\n",s,t3-t2);
+      werror("compile %O: %O\n",s,t3-td);
 #endif
 
       return zone_cache[s]=zo;
    }
 
+//  #define RTTZC_TIMING
+
    program find_rule(string s)
    {
       s=UNFIXID(s);
@@ -1007,7 +1009,7 @@ class Runtime_timezone_compiler
 
       if (!all_rules) all_rules=get_all_rules();
 
-#ifdef RTTZC_DEBUG
+#ifdef RTTZC_TIMING
       int t=time(1);
       float t1=time(t);
 #endif
@@ -1031,19 +1033,20 @@ class Runtime_timezone_compiler
 		    string a,string b,string q)==5 && a==s)
 	 {
 	    r->add(b);
-#ifdef RTTZC_DEBUG
+#ifdef RTTZC_TIMING
 	    float tf=time(t);
 	    werror("find %O at: %O\n",s,tf-t1);
+	    float tq=time(t);
 #endif
 	    foreach (q/"\n",string line)
 	       if (sscanf(line,"Rule%*[ \t]%[^ \t]%*[ \t]%s",a,b)==4 &&
 		   a==s)
-		  r->add(b);
+  		  r->add(b);
 	       else 
 		  break; // end of zone
-#ifdef RTTZC_DEBUG
+#ifdef RTTZC_TIMING
 	    float tf=time(t);
-	    werror("done %O at: %O\n",s,tf-t1);
+	    werror("load %O: %O\n",s,tf-tq);
 #endif
 	    break;
 	 }
@@ -1054,16 +1057,17 @@ class Runtime_timezone_compiler
 #ifdef RTTZC_DEBUG
       werror("%s\n",c);
 #endif
-#ifdef RTTZC_DEBUG
+#ifdef RTTZC_TIMING
       float t2=time(t);
       werror("find %O: %O\n",s,t2-t1);
+      float t2=time(t);
 #endif
       
       add_constant("__Calendar_mkzone",mkzonemod);
 
       program p=compile_string(c);
 
-#ifdef RTTZC_DEBUG
+#ifdef RTTZC_TIMING
       float t3=time(t);
       werror("compile %O: %O\n",s,t3-t2);
 #endif