Index: trunk/Cocoa/Pester/Source/Manip.pm
===================================================================
--- trunk/Cocoa/Pester/Source/Manip.pm	(revision 617)
+++ trunk/Cocoa/Pester/Source/Manip.pm	(revision 618)
@@ -1,4 +1,4 @@
 ﻿package Date::Manip;
-# Copyright (c) 1995-2007 Sullivan Beck.  All rights reserved.
+# Copyright (c) 1995-2010 Sullivan Beck.  All rights reserved.
 # This program is free software; you can redistribute it and/or modify it
 # under the same terms as Perl itself.
@@ -6,4 +6,6 @@
 ###########################################################################
 ###########################################################################
+
+use warnings;
 
 use vars qw($OS %Lang %Holiday %Events %Curr %Cnf %Zone $VERSION @ISA @EXPORT);
@@ -37,5 +39,9 @@
 
 # Determine if we're doing taint checking
-$Date::Manip::NoTaint = eval { local $^W=0; eval("#" . substr($^X, 0, 0)); 1 };
+#if ($] < 5.0080) {
+  $Date::Manip::NoTaint = eval { local $^W=0; eval("#" . substr($^X, 0, 0)); 1 };
+#} else {
+#  $Date::Manip::NoTaint = (${^TAINT} == 0 ? 1 : 0);
+#}
 
 ###########################################################################
@@ -212,5 +218,8 @@
 use IO::File;
 
-$VERSION="5.47";
+use vars qw($Abbrevs);
+use Date::Manip::DM5abbrevs;
+
+$VERSION="5.55";
 
 ########################################################################
@@ -242,5 +251,5 @@
 no strict "vars";
 # This sorts from longest to shortest element
-sub sortByLength {
+sub _sortByLength {
   return (length $b <=> length $a);
 }
@@ -276,5 +285,5 @@
       if ($val) {
         $Curr{"InitFilesRead"}=0;
-        &EraseHolidays();
+        EraseHolidays();
       }
     } elsif ($var =~ /^PathSep$/i) {
@@ -290,5 +299,5 @@
       $Cnf{"IgnoreGlobalCnf"}=1;
     } elsif ($var =~ /^EraseHolidays$/i) {
-      &EraseHolidays();
+      EraseHolidays();
     } else {
       push(@tmp,$_);
@@ -302,6 +311,6 @@
 
     if ($Cnf{"GlobalCnf"}) {
-      $file=&ExpandTilde($Cnf{"GlobalCnf"});
-      &Date_InitFile($file)  if ($file);
+      $file=_ExpandTilde($Cnf{"GlobalCnf"});
+      _Date_InitFile($file)  if ($file);
     }
   }
@@ -312,6 +321,6 @@
 
     if ($Cnf{"PersonalCnf"}  and  $Cnf{"PersonalCnfPath"}) {
-      $file=&SearchPath($Cnf{"PersonalCnf"},$Cnf{"PersonalCnfPath"},"r");
-      &Date_InitFile($file)  if ($file);
+      $file=_SearchPath($Cnf{"PersonalCnf"},$Cnf{"PersonalCnfPath"},"r");
+      _Date_InitFile($file)  if ($file);
     }
   }
@@ -323,13 +332,13 @@
     ($var,$val)=($1,$2);
     $val=""  if (! defined $val);
-    &Date_SetConfigVariable($var,$val);
+    _Date_SetConfigVariable($var,$val);
   }
 
   confess "ERROR: Unknown FirstDay in Date::Manip.\n"
-    if (! &IsInt($Cnf{"FirstDay"},1,7));
+    if (! _IsInt($Cnf{"FirstDay"},1,7));
   confess "ERROR: Unknown WorkWeekBeg in Date::Manip.\n"
-    if (! &IsInt($Cnf{"WorkWeekBeg"},1,7));
+    if (! _IsInt($Cnf{"WorkWeekBeg"},1,7));
   confess "ERROR: Unknown WorkWeekEnd in Date::Manip.\n"
-    if (! &IsInt($Cnf{"WorkWeekEnd"},1,7));
+    if (! _IsInt($Cnf{"WorkWeekEnd"},1,7));
   confess "ERROR: Invalid WorkWeek in Date::Manip.\n"
     if ($Cnf{"WorkWeekEnd"} <= $Cnf{"WorkWeekBeg"});
@@ -338,5 +347,5 @@
      $tmp,%tmp,$tmp2,@tmp2,
      $i,$j,@tmp3,
-     $zonesrfc,@zones)=();
+     @zones)=();
 
   my($L)=$Cnf{"Language"};
@@ -346,45 +355,45 @@
 
     if ($L eq "English") {
-      &Date_Init_English(\%lang);
+      _Date_Init_English(\%lang);
 
     } elsif ($L eq "French") {
-      &Date_Init_French(\%lang);
+      _Date_Init_French(\%lang);
 
     } elsif ($L eq "Swedish") {
-      &Date_Init_Swedish(\%lang);
+      _Date_Init_Swedish(\%lang);
 
     } elsif ($L eq "German") {
-      &Date_Init_German(\%lang);
+      _Date_Init_German(\%lang);
 
     } elsif ($L eq "Polish") {
-      &Date_Init_Polish(\%lang);
+      _Date_Init_Polish(\%lang);
 
     } elsif ($L eq "Dutch"  ||
              $L eq "Nederlands") {
-      &Date_Init_Dutch(\%lang);
+      _Date_Init_Dutch(\%lang);
 
     } elsif ($L eq "Spanish") {
-      &Date_Init_Spanish(\%lang);
+      _Date_Init_Spanish(\%lang);
 
     } elsif ($L eq "Portuguese") {
-      &Date_Init_Portuguese(\%lang);
+      _Date_Init_Portuguese(\%lang);
 
     } elsif ($L eq "Romanian") {
-      &Date_Init_Romanian(\%lang);
+      _Date_Init_Romanian(\%lang);
 
     } elsif ($L eq "Italian") {
-      &Date_Init_Italian(\%lang);
+      _Date_Init_Italian(\%lang);
 
     } elsif ($L eq "Russian") {
-      &Date_Init_Russian(\%lang);
+      _Date_Init_Russian(\%lang);
 
     } elsif ($L eq "Turkish") {
-      &Date_Init_Turkish(\%lang);
+      _Date_Init_Turkish(\%lang);
 
     } elsif ($L eq "Danish") {
-      &Date_Init_Danish(\%lang);
+      _Date_Init_Danish(\%lang);
 
     } elsif ($L eq "Catalan") {
-      &Date_Init_Catalan(\%lang);
+      _Date_Init_Catalan(\%lang);
 
     } else {
@@ -401,5 +410,5 @@
     $Lang{$L}{"MonthL"}=[];
     $Lang{$L}{"MonL"}=[];
-    &Date_InitLists([$lang{"month_name"},
+    _Date_InitLists([$lang{"month_name"},
                      $lang{"month_abb"}],
                     \$Lang{$L}{"Month"},"lc,sort,back",
@@ -419,5 +428,5 @@
     $Lang{$L}{"WkL"}=[];
     $Lang{$L}{"WL"}=[];
-    &Date_InitLists([$lang{"day_name"},
+    _Date_InitLists([$lang{"day_name"},
                      $lang{"day_abb"}],
                     \$Lang{$L}{"Week"},"lc,sort,back",
@@ -425,5 +434,5 @@
                      $Lang{$L}{"WkL"}],
                     [$Lang{$L}{"WeekH"},1]);
-    &Date_InitLists([$lang{"day_char"}],
+    _Date_InitLists([$lang{"day_char"}],
                     "","lc",
                     [$Lang{$L}{"WL"}],
@@ -446,14 +455,14 @@
 
     $Lang{$L}{"LastL"}=$lang{"last"};
-    &Date_InitStrings($lang{"last"},
+    _Date_InitStrings($lang{"last"},
                       \$Lang{$L}{"Last"},"lc,sort");
 
     $Lang{$L}{"EachL"}=$lang{"each"};
-    &Date_InitStrings($lang{"each"},
+    _Date_InitStrings($lang{"each"},
                       \$Lang{$L}{"Each"},"lc,sort");
 
     $Lang{$L}{"DoMH"}={};
     $Lang{$L}{"DoML"}=[];
-    &Date_InitLists([$lang{"num_suff"},
+    _Date_InitLists([$lang{"num_suff"},
                      $lang{"num_word"}],
                     \$Lang{$L}{"DoM"},"lc,sort,back,escape",
@@ -474,5 +483,5 @@
       push(@tmp,$tmp);
     }
-    &Date_InitStrings(\@tmp,\$Lang{$L}{"WoM"},
+    _Date_InitStrings(\@tmp,\$Lang{$L}{"WoM"},
                       "lc,sort,back,escape");
 
@@ -484,7 +493,7 @@
     #   PMstr   = "PM"
 
-    &Date_InitStrings($lang{"am"},\$Lang{$L}{"AM"},"lc,sort,escape");
-    &Date_InitStrings($lang{"pm"},\$Lang{$L}{"PM"},"lc,sort,escape");
-    &Date_InitStrings([ @{$lang{"am"}},@{$lang{"pm"}} ],\$Lang{$L}{"AmPm"},
+    _Date_InitStrings($lang{"am"},\$Lang{$L}{"AM"},"lc,sort,escape");
+    _Date_InitStrings($lang{"pm"},\$Lang{$L}{"PM"},"lc,sort,escape");
+    _Date_InitStrings([ @{$lang{"am"}},@{$lang{"pm"}} ],\$Lang{$L}{"AmPm"},
                       "lc,back,sort,escape");
     $Lang{$L}{"AMstr"}=$lang{"am"}[0];
@@ -506,13 +515,13 @@
     # (so there is no confusion between Mn and Month).
 
-    &Date_InitStrings($lang{"years"}  ,\$Lang{$L}{"Yabb"}, "lc,sort");
-    &Date_InitStrings($lang{"months"} ,\$Lang{$L}{"Mabb"}, "lc,sort");
-    &Date_InitStrings($lang{"weeks"}  ,\$Lang{$L}{"Wabb"}, "lc,sort");
-    &Date_InitStrings($lang{"days"}   ,\$Lang{$L}{"Dabb"}, "lc,sort");
-    &Date_InitStrings($lang{"hours"}  ,\$Lang{$L}{"Habb"}, "lc,sort");
-    &Date_InitStrings($lang{"minutes"},\$Lang{$L}{"MNabb"},"lc,sort");
-    &Date_InitStrings($lang{"seconds"},\$Lang{$L}{"Sabb"}, "lc,sort");
+    _Date_InitStrings($lang{"years"}  ,\$Lang{$L}{"Yabb"}, "lc,sort");
+    _Date_InitStrings($lang{"months"} ,\$Lang{$L}{"Mabb"}, "lc,sort");
+    _Date_InitStrings($lang{"weeks"}  ,\$Lang{$L}{"Wabb"}, "lc,sort");
+    _Date_InitStrings($lang{"days"}   ,\$Lang{$L}{"Dabb"}, "lc,sort");
+    _Date_InitStrings($lang{"hours"}  ,\$Lang{$L}{"Habb"}, "lc,sort");
+    _Date_InitStrings($lang{"minutes"},\$Lang{$L}{"MNabb"},"lc,sort");
+    _Date_InitStrings($lang{"seconds"},\$Lang{$L}{"Sabb"}, "lc,sort");
     $Lang{$L}{"Repl"}={};
-    &Date_InitHash($lang{"replace"},undef,"lc",$Lang{$L}{"Repl"});
+    _Date_InitHash($lang{"replace"},undef,"lc",$Lang{$L}{"Repl"});
 
     #  variables for special dates that are offsets from now
@@ -528,11 +537,11 @@
 
     $Lang{$L}{"TimesH"}={};
-    &Date_InitHash($lang{"times"},
+    _Date_InitHash($lang{"times"},
                    \$Lang{$L}{"Times"},"lc,sort,back",
                    $Lang{$L}{"TimesH"});
-    &Date_InitStrings($lang{"now"},\$Lang{$L}{"Now"},"lc,sort");
-    &Date_InitStrings($lang{"today"},\$Lang{$L}{"Today"},"lc,sort");
+    _Date_InitStrings($lang{"now"},\$Lang{$L}{"Now"},"lc,sort");
+    _Date_InitStrings($lang{"today"},\$Lang{$L}{"Today"},"lc,sort");
     $Lang{$L}{"OffsetH"}={};
-    &Date_InitHash($lang{"offset"},
+    _Date_InitHash($lang{"offset"},
                    \$Lang{$L}{"Offset"},"lc,sort,back",
                    $Lang{$L}{"OffsetH"});
@@ -547,126 +556,7 @@
     #    tz2z       = hash of all tzdata timezones to full timezone (EST#EDT)
 
-    $zonesrfc=
-      "idlw   -1200 ".  # International Date Line West
-      "nt     -1100 ".  # Nome
-      "hst    -1000 ".  # Hawaii Standard
-      "cat    -1000 ".  # Central Alaska
-      "ahst   -1000 ".  # Alaska-Hawaii Standard
-      "akst   -0900 ".  # Alaska Standard
-      "yst    -0900 ".  # Yukon Standard
-      "hdt    -0900 ".  # Hawaii Daylight
-      "akdt   -0800 ".  # Alaska Daylight
-      "ydt    -0800 ".  # Yukon Daylight
-      "pst    -0800 ".  # Pacific Standard
-      "pdt    -0700 ".  # Pacific Daylight
-      "mst    -0700 ".  # Mountain Standard
-      "mdt    -0600 ".  # Mountain Daylight
-      "cst    -0600 ".  # Central Standard
-      "cdt    -0500 ".  # Central Daylight
-      "est    -0500 ".  # Eastern Standard
-      "act    -0500 ".  # Brazil, Acre
-      "pet    -0500 ".  # Peruvian time
-      "sat    -0400 ".  # Chile
-      "clt    -0400 ".  # Chile
-      "clst   -0400 ".  # Chile Standard
-      "bot    -0400 ".  # Bolivia
-      "amt    -0400 ".  # Brazil, Amazon
-      "acst   -0400 ".  # Brazil, Acre Daylight
-      "edt    -0400 ".  # Eastern Daylight
-      "ast    -0400 ".  # Atlantic Standard
-      #"nst   -0330 ".  # Newfoundland Standard      nst=North Sumatra    +0630
-      "nft    -0330 ".  # Newfoundland
-      #"gst   -0300 ".  # Greenland Standard         gst=Guam Standard    +1000
-      "cldt   -0300 ".  # Chile Daylight
-      #"bst   -0300 ".  # Brazil Standard            bst=British Summer   +0100
-      "brt    -0300 ".  # Brazil Standard (official time)
-      #"brst   -0300 ".  # Brazil Standard
-      "adt    -0300 ".  # Atlantic Daylight
-      "art    -0300 ".  # Argentina
-      "amst   -0300 ".  # Brazil, Amazon Daylight
-      "uyt    -0300 ".  # Uruguay
-      "ndt    -0230 ".  # Newfoundland Daylight
-      "brst   -0200 ".  # Brazil Daylight (official time)
-      "fnt    -0200 ".  # Brazil, Fernando de Noronha
-      "at     -0200 ".  # Azores
-      "yust   -0200 ".  # Uruguay
-      "wat    -0100 ".  # West Africa
-      "fnst   -0100 ".  # Brazil, Fernando de Noronha Daylight
-      "gmt    +0000 ".  # Greenwich Mean
-      "ut     +0000 ".  # Universal
-      "utc    +0000 ".  # Universal (Coordinated)
-      "wet    +0000 ".  # Western European
-      "cet    +0100 ".  # Central European
-      "fwt    +0100 ".  # French Winter
-      "met    +0100 ".  # Middle European
-      "mez    +0100 ".  # Middle European
-      "mewt   +0100 ".  # Middle European Winter
-      "swt    +0100 ".  # Swedish Winter
-      "bst    +0100 ".  # British Summer             bst=Brazil standard  -0300
-      "gb     +0100 ".  # GMT with daylight savings
-      "west   +0100 ".  # Western European Daylight
-      "eet    +0200 ".  # Eastern Europe, USSR Zone 1
-      "cest   +0200 ".  # Central European Summer
-      "fst    +0200 ".  # French Summer
-      "ist    +0200 ".  # Israel standard
-      "mest   +0200 ".  # Middle European Summer
-      "mesz   +0200 ".  # Middle European Summer
-      "metdst +0200 ".  # An alias for mest used by HP-UX
-      "sast   +0200 ".  # South African Standard
-      "sst    +0200 ".  # Swedish Summer             sst=South Sumatra    +0700
-      "bt     +0300 ".  # Baghdad, USSR Zone 2
-      "eest   +0300 ".  # Eastern Europe Summer
-      "eetdst +0300 ".  # An alias for eest used by HP-UX
-      "eetedt +0300 ".  # Eastern Europe, USSR Zone 1
-      "idt    +0300 ".  # Israel Daylight
-      "msk    +0300 ".  # Moscow
-      "eat    +0300 ".  # East Africa
-      "it     +0330 ".  # Iran
-      "zp4    +0400 ".  # USSR Zone 3
-      "msd    +0400 ".  # Moscow Daylight
-      "zp5    +0500 ".  # USSR Zone 4
-      "ist    +0530 ".  # Indian Standard
-      "zp6    +0600 ".  # USSR Zone 5
-      "novt   +0600 ".  # Novosibirsk winter time zone, Russia
-      "nst    +0630 ".  # North Sumatra              nst=Newfoundland Std -0330
-      #"sst   +0700 ".  # South Sumatra, USSR Zone 6 sst=Swedish Summer   +0200
-      "javt   +0700 ".  # Java
-      "ict    +0700 ".  # Indo China Time
-      "novst  +0700 ".  # Novosibirsk summer time zone, Russia
-      "krat   +0700 ".  # Krasnoyarsk, Russia
-      "myt    +0800 ".  # Malaysia
-      "hkt    +0800 ".  # Hong Kong
-      "sgt    +0800 ".  # Singapore
-      "cct    +0800 ".  # China Coast, USSR Zone 7
-      "krast  +0800 ".  # Krasnoyarsk, Russia Daylight
-      "awst   +0800 ".  # Australian Western Standard
-      "wst    +0800 ".  # West Australian Standard
-      "pht    +0800 ".  # Asia Manila
-      "kst    +0900 ".  # Republic of Korea
-      "jst    +0900 ".  # Japan Standard, USSR Zone 8
-      "rok    +0900 ".  # Republic of Korea
-      "acst   +0930 ".  # Australian Central Standard
-      "cast   +0930 ".  # Central Australian Standard
-      "aest   +1000 ".  # Australian Eastern Standard
-      "east   +1000 ".  # Eastern Australian Standard
-      "gst    +1000 ".  # Guam Standard, USSR Zone 9 gst=Greenland Std    -0300
-      "chst   +1000 ".  # Guam Standard, USSR Zone 9 gst=Greenland Std    -0300
-      "acdt   +1030 ".  # Australian Central Daylight
-      "cadt   +1030 ".  # Central Australian Daylight
-      "aedt   +1100 ".  # Australian Eastern Daylight
-      "eadt   +1100 ".  # Eastern Australian Daylight
-      "idle   +1200 ".  # International Date Line East
-      "nzst   +1200 ".  # New Zealand Standard
-      "nzt    +1200 ".  # New Zealand
-      "nzdt   +1300 ".  # New Zealand Daylight
-      "z +0000 ".
-      "a +0100 b +0200 c +0300 d +0400 e +0500 f +0600 g +0700 h +0800 ".
-      "i +0900 k +1000 l +1100 m +1200 ".
-      "n -0100 o -0200 p -0300 q -0400 r -0500 s -0600 t -0700 u -0800 ".
-      "v -0900 w -1000 x -1100 y -1200";
-
     $Zone{"n2o"} = {};
     ($Zone{"zones"},%{ $Zone{"n2o"} })=
-      &Date_Regexp($zonesrfc,"sort,lc,under,back",
+      _Date_Regexp($Abbrevs,"sort,lc,under,back",
                    "keys");
 
@@ -683,6 +573,6 @@
     $Zone{"tz2z"} = {};
     ($Zone{"tzones"},%{ $Zone{"tz2z"} })=
-      &Date_Regexp($tmp,"lc,under,back","keys");
-    $Cnf{"TZ"}=&Date_TimeZone;
+      _Date_Regexp($tmp,"lc,under,back","keys");
+    $Cnf{"TZ"}=Date_TimeZone();
 
     #  misc. variables
@@ -696,12 +586,12 @@
     #    Prev   = "(?:last|previous)"
 
-    &Date_InitStrings($lang{"at"},    \$Lang{$L}{"At"},     "lc,sort");
-    &Date_InitStrings($lang{"on"},    \$Lang{$L}{"On"},     "lc,sort");
-    &Date_InitStrings($lang{"future"},\$Lang{$L}{"Future"}, "lc,sort");
-    &Date_InitStrings($lang{"later"}, \$Lang{$L}{"Later"},  "lc,sort");
-    &Date_InitStrings($lang{"past"},  \$Lang{$L}{"Past"},   "lc,sort");
-    &Date_InitStrings($lang{"next"},  \$Lang{$L}{"Next"},   "lc,sort");
-    &Date_InitStrings($lang{"prev"},  \$Lang{$L}{"Prev"},   "lc,sort");
-    &Date_InitStrings($lang{"of"},    \$Lang{$L}{"Of"},     "lc,sort");
+    _Date_InitStrings($lang{"at"},    \$Lang{$L}{"At"},     "lc,sort");
+    _Date_InitStrings($lang{"on"},    \$Lang{$L}{"On"},     "lc,sort");
+    _Date_InitStrings($lang{"future"},\$Lang{$L}{"Future"}, "lc,sort");
+    _Date_InitStrings($lang{"later"}, \$Lang{$L}{"Later"},  "lc,sort");
+    _Date_InitStrings($lang{"past"},  \$Lang{$L}{"Past"},   "lc,sort");
+    _Date_InitStrings($lang{"next"},  \$Lang{$L}{"Next"},   "lc,sort");
+    _Date_InitStrings($lang{"prev"},  \$Lang{$L}{"Prev"},   "lc,sort");
+    _Date_InitStrings($lang{"of"},    \$Lang{$L}{"Of"},     "lc,sort");
 
     #  calc mode variables
@@ -710,7 +600,7 @@
     #    Business = "(?:business)"
 
-    &Date_InitStrings($lang{"exact"},   \$Lang{$L}{"Exact"},   "lc,sort");
-    &Date_InitStrings($lang{"approx"},  \$Lang{$L}{"Approx"},  "lc,sort");
-    &Date_InitStrings($lang{"business"},\$Lang{$L}{"Business"},"lc,sort");
+    _Date_InitStrings($lang{"exact"},   \$Lang{$L}{"Exact"},   "lc,sort");
+    _Date_InitStrings($lang{"approx"},  \$Lang{$L}{"Approx"},  "lc,sort");
+    _Date_InitStrings($lang{"business"},\$Lang{$L}{"Business"},"lc,sort");
 
     ############### END OF LANGUAGE INITIALIZATION
@@ -728,8 +618,8 @@
     } else {
       confess "ERROR: Invalid WorkDayBeg in Date::Manip.\n"
-        if (! (($h1,$m1)=&CheckTime($Cnf{"WorkDayBeg"})));
+        if (! (($h1,$m1)=_CheckTime($Cnf{"WorkDayBeg"})));
       $Cnf{"WorkDayBeg"}="$h1:$m1";
       confess "ERROR: Invalid WorkDayEnd in Date::Manip.\n"
-        if (! (($h2,$m2)=&CheckTime($Cnf{"WorkDayEnd"})));
+        if (! (($h2,$m2)=_CheckTime($Cnf{"WorkDayEnd"})));
       $Cnf{"WorkDayEnd"}="$h2:$m2";
 
@@ -759,5 +649,5 @@
     $m++;
   }
-  &Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk);
+  _Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk);
   $Curr{"Y"}=$y;
   $Curr{"M"}=$m;
@@ -767,7 +657,7 @@
   $Curr{"S"}=$s;
   $Curr{"AmPm"}=$ampm;
-  $Curr{"Now"}=&Date_Join($y,$m,$d,$h,$mn,$s);
+  $Curr{"Now"}=_Date_Join($y,$m,$d,$h,$mn,$s);
   if ($Cnf{"TodayIsMidnight"}) {
-    $Curr{"Today"}=&Date_Join($y,$m,$d,0,0,0);
+    $Curr{"Today"}=_Date_Join($y,$m,$d,0,0,0);
   } else {
     $Curr{"Today"}=$Curr{"Now"};
@@ -807,5 +697,5 @@
 
   # We only need to reinitialize if we have to determine what NOW is.
-  &Date_Init()  if (! $Curr{"InitDone"}  or  $Cnf{"UpdateCurrTZ"});
+  Date_Init()  if (! $Curr{"InitDone"}  or  $Cnf{"UpdateCurrTZ"});
 
   my($L)=$Cnf{"Language"};
@@ -849,9 +739,9 @@
 
   $delta="";
-  $delta=&ParseDateDelta($_)  if (/[^:0-9]/);
+  $delta=ParseDateDelta($_)  if (/[^:0-9]/);
 
   # Put parse in a simple loop for an easy exit.
  PARSE: {
-    my(@tmp)=&Date_Split($_);
+    my(@tmp)=_Date_Split($_);
     if (@tmp) {
       ($y,$m,$d,$h,$mn,$s)=@tmp;
@@ -894,16 +784,16 @@
     # Other regular expressions
 
-    my($D4)='(\d{4})';            # 4 digits      (yr)
-    my($YY)='(\d{4}|\d{2})';      # 2 or 4 digits (yr)
-    my($DD)='(\d{2})';            # 2 digits      (mon/day/hr/min/sec)
-    my($D) ='(\d{1,2})';          # 1 or 2 digit  (mon/day/hr)
-    my($FS)="(?:$ss\\d+)?";       # fractional secs
-    my($sep)='[\/.-]';            # non-ISO8601 m/d/yy separators
+    my($D4)='(\d{4})';            	    # 4 digits      (yr)
+    my($YY)='(\d{4}|\d{2})';      	    # 2 or 4 digits (yr)
+    my($DD)='(\d{2})';            	    # 2 digits      (mon/day/hr/min/sec)
+    my($D) ='(\d{1,2})';          	    # 1 or 2 digit  (mon/day/hr)
+    my($FS)="(?:$ss\\d+)?";       	    # fractional secs
+    my($sep)='[\/.-]';            	    # non-ISO8601 m/d/yy separators
     # absolute time zone     +0700 (GMT)
-    my($hzone)='(?:[0-1][0-9]|2[0-3])';                    # 00 - 23
-    my($mzone)='(?:[0-5][0-9])';                           # 00 - 59
+    my($hzone)='(?:[0-1][0-9]|2[0-3])';     # 00 - 23
+    my($mzone)='(?:[0-5][0-9])';            # 00 - 59
     my($zone2)='(?:\s*([+-](?:'."$hzone$mzone|$hzone:$mzone|$hzone))".
-                                                           # +0700 +07:00 -07
-      '(?:\s*\([^)]+\))?)';                                # (GMT)
+                                            # +0700 +07:00 -07
+      '(?:\s*\([^)]+\))?)';                 # (GMT)
 
     # A regular expression for the time EXCEPT for the hour part
@@ -980,5 +870,5 @@
         }
         $time=1;
-        &Date_TimeCheck(\$h,\$mn,\$s,\$ampm);
+        _Date_TimeCheck(\$h,\$mn,\$s,\$ampm);
         $y=$m=$d="";
         # We're going to be calling TimeCheck again below (when we check the
@@ -987,5 +877,5 @@
         $ampm="";
         if (/^\s*$/) {
-          &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+          Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
           last PARSE;
         }
@@ -1070,5 +960,5 @@
         # YY-W##-D
         ($y,$wofm,$dofw)=($1,$2,$3);
-        ($y,$m,$d)=&Date_NthWeekOfYear($y,$wofm,$dofw);
+        ($y,$m,$d)=_Date_NthWeekOfYear($y,$wofm,$dofw);
         last PARSE;
 
@@ -1077,5 +967,5 @@
         # YYDOY
         ($y,$which)=($1,$2);
-        ($y,$m,$d)=&Date_NthDayOfYear($y,$which);
+        ($y,$m,$d)=Date_NthDayOfYear($y,$which);
         last PARSE;
 
@@ -1093,6 +983,6 @@
     return ""  if ($Curr{"InCalc"}  &&  $delta);
     if ($delta) {
-      &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-      return &DateCalc_DateDelta($Curr{"Now"},$delta);
+      Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+      return _DateCalc_DateDelta($Curr{"Now"},$delta);
     }
 
@@ -1110,18 +1000,18 @@
         ($wofm,$dofw,$m,$y)=($1,$2,$3,$4);
         # fix $m, $y
-        return ""  if (&Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
+        return ""  if (_Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
         $dofw=$week{lc($dofw)};
         $wofm=$wom{lc($wofm)};
         # Get the first day of the month
-        $date=&Date_Join($y,$m,1,$h,$mn,$s);
+        $date=_Date_Join($y,$m,1,$h,$mn,$s);
         if ($wofm==-1) {
-          $date=&DateCalc_DateDelta($date,"+0:1:0:0:0:0:0",\$err,0);
-          $date=&Date_GetPrev($date,$dofw,0);
+          $date=_DateCalc_DateDelta($date,"+0:1:0:0:0:0:0",\$err,0);
+          $date=Date_GetPrev($date,$dofw,0);
         } else {
           for ($i=0; $i<$wofm; $i++) {
             if ($i==0) {
-              $date=&Date_GetNext($date,$dofw,1);
+              $date=Date_GetNext($date,$dofw,1);
             } else {
-              $date=&Date_GetNext($date,$dofw,0);
+              $date=Date_GetNext($date,$dofw,0);
             }
           }
@@ -1132,8 +1022,8 @@
         # last day in month
         ($m,$y)=($1,$2);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $y=&Date_FixYear($y)  if (! defined $y  or  length($y)<4);
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $y=_Date_FixYear($y)  if (! defined $y  or  length($y)<4);
         $m=$month{lc($m)};
-        $d=&Date_DaysInMonth($m,$y);
+        $d=Date_DaysInMonth($m,$y);
         last PARSE;
 
@@ -1141,7 +1031,7 @@
         # friday
         ($dofw)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&Date_GetPrev($Curr{"Now"},$Cnf{"FirstDay"},1);
-        $date=&Date_GetNext($date,$dofw,1,$h,$mn,$s);
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=Date_GetPrev($Curr{"Now"},$Cnf{"FirstDay"},1);
+        $date=Date_GetNext($date,$dofw,1,$h,$mn,$s);
         last PARSE;
 
@@ -1149,6 +1039,6 @@
         # next friday
         ($dofw)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&Date_GetNext($Curr{"Now"},$dofw,0,$h,$mn,$s);
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=Date_GetNext($Curr{"Now"},$dofw,0,$h,$mn,$s);
         last PARSE;
 
@@ -1156,32 +1046,32 @@
         # last friday
         ($dofw)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&Date_GetPrev($Curr{"Now"},$dofw,0,$h,$mn,$s);
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=Date_GetPrev($Curr{"Now"},$dofw,0,$h,$mn,$s);
         last PARSE;
 
       } elsif (/^$next$wkabb$/i) {
         # next week
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"+0:0:1:0:0:0:0",\$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"+0:0:1:0:0:0:0",\$err,0);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
       } elsif (/^$prev$wkabb$/i) {
         # last week
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"-0:0:1:0:0:0:0",\$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"-0:0:1:0:0:0:0",\$err,0);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
 
       } elsif (/^$next$mabb$/i) {
         # next month
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"+0:1:0:0:0:0:0",\$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"+0:1:0:0:0:0:0",\$err,0);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
       } elsif (/^$prev$mabb$/i) {
         # last month
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"-0:1:0:0:0:0:0",\$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"-0:1:0:0:0:0:0",\$err,0);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
 
@@ -1191,16 +1081,16 @@
         # 2 days later
         ($num)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"+0:0:0:$num:0:0:0",
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"+0:0:0:$num:0:0:0",
                                   \$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
       } elsif (/^(\d+)$day$past$/i) {
         # 2 days ago
         ($num)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"-0:0:0:$num:0:0:0",
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"-0:0:0:$num:0:0:0",
                                  \$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
 
@@ -1210,16 +1100,16 @@
         # 2 weeks later
         ($num)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"+0:0:$num:0:0:0:0",
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"+0:0:$num:0:0:0:0",
                                   \$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
       } elsif (/^(\d+)$wkabb$past$/i) {
         # 2 weeks ago
         ($num)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"-0:0:$num:0:0:0:0",
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"-0:0:$num:0:0:0:0",
                                  \$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
 
@@ -1229,16 +1119,16 @@
         # 2 months later
         ($num)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"+0:$num:0:0:0:0:0",
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"+0:$num:0:0:0:0:0",
                                   \$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
       } elsif (/^(\d+)$mabb$past$/i) {
         # 2 months ago
         ($num)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},"-0:$num:0:0:0:0:0",
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},"-0:$num:0:0:0:0:0",
                                   \$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if (defined $h);
+        $date=Date_SetTime($date,$h,$mn,$s)  if (defined $h);
         last PARSE;
 
@@ -1272,19 +1162,19 @@
         # now week     (British date: 1 week from now)
         # today week   (British date: 1 week from today)
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{$tmp},"+0:0:1:0:0:0:0",\$err,0);
-        $date=&Date_SetTime($date,$h,$mn,$s)  if ($time);
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{$tmp},"+0:0:1:0:0:0:0",\$err,0);
+        $date=Date_SetTime($date,$h,$mn,$s)  if ($time);
         last PARSE;
       } elsif (/^$offset\s*$wkabb$/i) {
         # tomorrow week  (British date: 1 week from tomorrow)
         ($offset)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
         $offset=$Lang{$L}{"OffsetH"}{lc($offset)};
-        $date=&DateCalc_DateDelta($Curr{"Now"},$offset,\$err,0);
-        $date=&DateCalc_DateDelta($date,"+0:0:1:0:0:0:0",\$err,0);
+        $date=_DateCalc_DateDelta($Curr{"Now"},$offset,\$err,0);
+        $date=_DateCalc_DateDelta($date,"+0:0:1:0:0:0:0",\$err,0);
         if ($time) {
           return ""
-            if (&Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
-          $date=&Date_SetTime($date,$h,$mn,$s);
+            if (_Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
+          $date=Date_SetTime($date,$h,$mn,$s);
         }
         last PARSE;
@@ -1292,9 +1182,9 @@
 
       if ($tmp) {
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
-        $date=&DateCalc_DateDelta($Curr{"Now"},
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        $date=_DateCalc_DateDelta($Curr{"Now"},
                                   $tmp . "0:0:$num:0:0:0:0",\$err,0);
-        $date=&Date_GetPrev($date,$Cnf{"FirstDay"},1);
-        $date=&Date_GetNext($date,$dofw,1,$h,$mn,$s);
+        $date=Date_GetPrev($date,$Cnf{"FirstDay"},1);
+        $date=Date_GetNext($date,$dofw,1,$h,$mn,$s);
         last PARSE;
       }
@@ -1323,9 +1213,9 @@
       $y=$Curr{"Y"}  if (! $y);
       $y--; # previous year
-      $tmp=&Date_GetNext("$y-12-31",$dofw,0);
+      $tmp=Date_GetNext("$y-12-31",$dofw,0);
       if ($which>1) {
-        $tmp=&DateCalc_DateDelta($tmp,"+0:0:".($which-1).":0:0:0:0",\$err,0);
+        $tmp=_DateCalc_DateDelta($tmp,"+0:0:".($which-1).":0:0:0:0",\$err,0);
       }
-      ($y,$m,$d)=(&Date_Split($tmp, 1))[0..2];
+      ($y,$m,$d)=(_Date_Split($tmp, 1))[0..2];
       last PARSE;
     } elsif (/^$week$wkabb\s*$D(?:$of?\s*$YY)?$/i  ||
@@ -1334,5 +1224,5 @@
       # sunday 22nd week in 1996
       ($dofw,$which,$y)=($1,$2,$3);
-      ($y,$m,$d)=&Date_NthWeekOfYear($y,$which,$dofw);
+      ($y,$m,$d)=_Date_NthWeekOfYear($y,$which,$dofw);
       last PARSE;
     }
@@ -1405,18 +1295,18 @@
       } elsif (/^epochNEGATIVE (\d+)$/) {
         $s=$1;
-        $date=&DateCalc("1970-01-01 00:00 GMT","-0:0:$s");
+        $date=DateCalc("1970-01-01 00:00 GMT","-0:0:$s");
       } elsif (/^epoch\s*(\d+)$/i) {
         $s=$1;
-        $date=&DateCalc("1970-01-01 00:00 GMT","+0:0:$s");
+        $date=DateCalc("1970-01-01 00:00 GMT","+0:0:$s");
 
       } elsif ( (/^$now$/i   &&  ($tmp="Now"))  ||
                 (/^$today$/i &&  ($tmp="Today")) ) {
         # now, today
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
         $date=$Curr{$tmp};
         if ($time) {
           return ""
-            if (&Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
-          $date=&Date_SetTime($date,$h,$mn,$s);
+            if (_Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
+          $date=Date_SetTime($date,$h,$mn,$s);
         }
         last PARSE;
@@ -1425,11 +1315,11 @@
         # yesterday, tomorrow
         ($offset)=($1);
-        &Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
+        Date_Init()  if (! $Cnf{"UpdateCurrTZ"});
         $offset=$Lang{$L}{"OffsetH"}{lc($offset)};
-        $date=&DateCalc_DateDelta($Curr{"Now"},$offset,\$err,0);
+        $date=_DateCalc_DateDelta($Curr{"Now"},$offset,\$err,0);
         if ($time) {
           return ""
-            if (&Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
-          $date=&Date_SetTime($date,$h,$mn,$s);
+            if (_Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
+          $date=Date_SetTime($date,$h,$mn,$s);
         }
         last PARSE;
@@ -1442,10 +1332,10 @@
 
   if (! $date) {
-    return ""  if (&Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
-    $date=&Date_Join($y,$m,$d,$h,$mn,$s);
-  }
-  $date=&Date_ConvTZ($date,$z);
+    return ""  if (_Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
+    $date=_Date_Join($y,$m,$d,$h,$mn,$s);
+  }
+  $date=Date_ConvTZ($date,$z);
   if ($midnight) {
-    $date=&DateCalc_DateDelta($date,"+0:0:0:1:0:0:0");
+    $date=_DateCalc_DateDelta($date,"+0:0:0:1:0:0:0");
   }
   return $date;
@@ -1454,5 +1344,5 @@
 sub ParseDate {
   print "DEBUG: ParseDate\n"  if ($Curr{"Debug"} =~ /trace/);
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
   my($args,@args,@a,$ref,$date)=();
   @a=@_;
@@ -1469,10 +1359,10 @@
   $ref=ref $args;
   if (! $ref) {
-    return $args  if (&Date_Split($args));
+    return $args  if (_Date_Split($args));
     @args=($args);
   } elsif ($ref eq "ARRAY") {
     @args=@$args;
   } elsif ($ref eq "SCALAR") {
-    return $$args  if (&Date_Split($$args));
+    return $$args  if (_Date_Split($$args));
     @args=($$args);
   } else {
@@ -1490,5 +1380,5 @@
  PARSE: while($#a>=0) {
     $date=join(" ",@a);
-    $date=&ParseDateString($date);
+    $date=ParseDateString($date);
     last  if ($date);
     pop(@a);
@@ -1502,6 +1392,6 @@
 sub Date_Cmp {
   my($D1,$D2)=@_;
-  my($date1)=&ParseDateString($D1);
-  my($date2)=&ParseDateString($D2);
+  my($date1)=ParseDateString($D1);
+  my($date2)=ParseDateString($D2);
   return $date1 cmp $date2;
 }
@@ -1548,13 +1438,13 @@
   $Curr{"InCalc"}=1;
 
-  if ($tmp=&ParseDateString($D1)) {
+  if ($tmp=ParseDateString($D1)) {
     # If we've already parsed the date, we don't want to do it a second
     # time (so we don't convert timezones twice).
-    if (&Date_Split($D1)) {
+    if (_Date_Split($D1)) {
       push(@date,$D1);
     } else {
       push(@date,$tmp);
     }
-  } elsif ($tmp=&ParseDateDelta($D1)) {
+  } elsif ($tmp=ParseDateDelta($D1)) {
     push(@delta,$tmp);
   } else {
@@ -1565,11 +1455,11 @@
   }
 
-  if ($tmp=&ParseDateString($D2)) {
-    if (&Date_Split($D2)) {
+  if ($tmp=ParseDateString($D2)) {
+    if (_Date_Split($D2)) {
       push(@date,$D2);
     } else {
       push(@date,$tmp);
     }
-  } elsif ($tmp=&ParseDateDelta($D2)) {
+  } elsif ($tmp=ParseDateDelta($D2)) {
     push(@delta,$tmp);
     $mode = $Curr{"Mode"};
@@ -1585,10 +1475,10 @@
 
   if ($#date==1) {
-    $ret=&DateCalc_DateDate(@date,$mode);
+    $ret=_DateCalc_DateDate(@date,$mode);
   } elsif ($#date==0) {
-    $ret=&DateCalc_DateDelta(@date,@delta,\$err,$mode);
+    $ret=_DateCalc_DateDelta(@date,@delta,\$err,$mode);
     $$errref=$err  if ($ref);
   } else {
-    $ret=&DateCalc_DeltaDelta(@delta,$mode);
+    $ret=_DateCalc_DeltaDelta(@delta,$mode);
   }
   $ret;
@@ -1634,5 +1524,5 @@
   my($workweek)=$Cnf{"WorkWeekEnd"}-$Cnf{"WorkWeekBeg"}+1;
 
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
   # A sign can be a sequence of zero or more + and - signs, this
   # allows for deltas like '+ -2 days'.
@@ -1790,5 +1680,5 @@
   }
 
-  $delta=&Delta_Normalize($delta,$Curr{"Mode"});
+  $delta=_Delta_Normalize($delta,$Curr{"Mode"});
   return $delta;
 }
@@ -1800,11 +1690,11 @@
   my($format,%f,$out,@out,$c,$date1,$date2,$tmp)=();
   my($scalar)=();
-  $date=&ParseDateString($date);
+  $date=ParseDateString($date);
   return  if (! $date);
 
   my($y,$m,$d,$h,$mn,$s)=($f{"Y"},$f{"m"},$f{"d"},$f{"H"},$f{"M"},$f{"S"})=
-    &Date_Split($date, 1);
+    _Date_Split($date, 1);
   $f{"y"}=substr $f{"Y"},2;
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
 
   if (! wantarray) {
@@ -1822,6 +1712,6 @@
   s/^0/ /;
   $f{"f"}=$_;
-  $f{"U"}=&Date_WeekOfYear($m,$d,$y,7);
-  $f{"W"}=&Date_WeekOfYear($m,$d,$y,1);
+  $f{"U"}=Date_WeekOfYear($m,$d,$y,7);
+  $f{"W"}=Date_WeekOfYear($m,$d,$y,1);
 
   # check week 52,53 and 0
@@ -1834,9 +1724,9 @@
       $mm=1;
       $yy++;
-      if (&Date_WeekOfYear($mm,$dd,$yy,1)==2) {
+      if (Date_WeekOfYear($mm,$dd,$yy,1)==2) {
         $f{"G"}=$yy;
         $f{"W"}=1;
       }
-      if (&Date_WeekOfYear($mm,$dd,$yy,7)==2) {
+      if (Date_WeekOfYear($mm,$dd,$yy,7)==2) {
         $f{"L"}=$yy;
         $f{"U"}=1;
@@ -1851,5 +1741,5 @@
     $mm=12;
     $f{"G"}=$yy;
-    $f{"W"}=&Date_WeekOfYear($mm,$dd,$yy,1)+1;
+    $f{"W"}=Date_WeekOfYear($mm,$dd,$yy,1)+1;
   }
   if ($f{"U"}==0) {
@@ -1860,5 +1750,5 @@
     $mm=12;
     $f{"L"}=$yy;
-    $f{"U"}=&Date_WeekOfYear($mm,$dd,$yy,7)+1;
+    $f{"U"}=Date_WeekOfYear($mm,$dd,$yy,7)+1;
   }
 
@@ -1867,15 +1757,15 @@
 
   # day
-  $f{"j"}=&Date_DayOfYear($m,$d,$y);
+  $f{"j"}=Date_DayOfYear($m,$d,$y);
   $f{"j"} = "0" . $f{"j"}   while (length($f{"j"})<3);
   $_=$d;
   s/^0/ /;
   $f{"e"}=$_;
-  $f{"w"}=&Date_DayOfWeek($m,$d,$y);
+  $f{"w"}=Date_DayOfWeek($m,$d,$y);
   $f{"v"}=$Lang{$Cnf{"Language"}}{"WL"}[$f{"w"}-1];
   $f{"v"}=" ".$f{"v"}  if (length $f{"v"} < 2);
   $f{"a"}=$Lang{$Cnf{"Language"}}{"WkL"}[$f{"w"}-1];
   $f{"A"}=$Lang{$Cnf{"Language"}}{"WeekL"}[$f{"w"}-1];
-  $f{"E"}=&Date_DaySuffix($f{"e"});
+  $f{"E"}=Date_DaySuffix($f{"e"});
 
   # hour
@@ -1895,6 +1785,6 @@
 
   # minute, second, timezone
-  $f{"o"}=&Date_SecsSince1970($m,$d,$y,$h,$mn,$s);
-  $f{"s"}=&Date_SecsSince1970GMT($m,$d,$y,$h,$mn,$s);
+  $f{"o"}=Date_SecsSince1970($m,$d,$y,$h,$mn,$s);
+  $f{"s"}=Date_SecsSince1970GMT($m,$d,$y,$h,$mn,$s);
   $f{"Z"}=($Cnf{"ConvTZ"} eq "IGNORE" or $Cnf{"ConvTZ"} eq "") ?
            $Cnf{"TZ"} : $Cnf{"ConvTZ"};
@@ -1919,5 +1809,5 @@
   if ($f{"W"}==0) {
     $y--;
-    $tmp=&Date_WeekOfYear(12,31,$y,1);
+    $tmp=Date_WeekOfYear(12,31,$y,1);
     $tmp="0$tmp"  if (length($tmp) < 2);
     $f{"J"}=qq|$y-W$tmp-$f{"w"}|;
@@ -1945,8 +1835,8 @@
         $c=chop($format);
         if ($c eq "l") {
-          &Date_Init();
-          $date1=&DateCalc_DateDelta($Curr{"Now"},"-0:6:0:0:0:0:0");
-          $date2=&DateCalc_DateDelta($Curr{"Now"},"+0:6:0:0:0:0:0");
-          if (&Date_Cmp($date,$date1)>=0  &&  &Date_Cmp($date,$date2)<=0) {
+          Date_Init();
+          $date1=_DateCalc_DateDelta($Curr{"Now"},"-0:6:0:0:0:0:0");
+          $date2=_DateCalc_DateDelta($Curr{"Now"},"+0:6:0:0:0:0:0");
+          if (Date_Cmp($date,$date1)>=0  &&  Date_Cmp($date,$date2)<=0) {
             $f{"l"}=qq|$f{"b"} $f{"e"} $h:$mn|;
           } else {
@@ -1986,9 +1876,9 @@
   my($dec,@format) = @arg;
 
-  $delta=&ParseDateDelta($delta);
+  $delta=ParseDateDelta($delta);
   return ""  if (! $delta);
   my(@out,%f,$out,$c1,$c2,$scalar,$format)=();
   local($_)=$delta;
-  my($y,$M,$w,$d,$h,$m,$s)=&Delta_Split($delta);
+  my($y,$M,$w,$d,$h,$m,$s)=_Delta_Split($delta);
   # Get rid of positive signs.
   ($y,$M,$w,$d,$h,$m,$s)=map { 1*$_; }($y,$M,$w,$d,$h,$m,$s);
@@ -2119,5 +2009,5 @@
 sub ParseRecur {
   print "DEBUG: ParseRecur\n"  if ($Curr{"Debug"} =~ /trace/);
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
 
   my($recur,$dateb,$date0,$date1,$flag)=@_;
@@ -2157,13 +2047,13 @@
 
   if ($dateb) {
-    $dateb=&ParseDateString($dateb);
+    $dateb=ParseDateString($dateb);
     return ""  if (! $dateb);
   }
   if ($date0) {
-    $date0=&ParseDateString($date0);
+    $date0=ParseDateString($date0);
     return ""  if (! $date0);
   }
   if ($date1) {
-    $date1=&ParseDateString($date1);
+    $date1=ParseDateString($date1);
     return ""  if (! $date1);
   }
@@ -2174,5 +2064,5 @@
   #
 
-  @tmp=&Recur_Split($_);
+  @tmp=_Recur_Split($_);
 
   if (@tmp) {
@@ -2190,13 +2080,13 @@
 
     if ($date_b) {
-      $date_b=&ParseDateString($date_b);
+      $date_b=ParseDateString($date_b);
       return ""  if (! $date_b);
     }
     if ($date_0) {
-      $date_0=&ParseDateString($date_0);
+      $date_0=ParseDateString($date_0);
       return ""  if (! $date_0);
     }
     if ($date_1) {
-      $date_1=&ParseDateString($date_1);
+      $date_1=ParseDateString($date_1);
       return ""  if (! $date_1);
     }
@@ -2251,11 +2141,11 @@
         if ($m) {
           $m=$mmm{lc($m)};
-          $date_0=&Date_Join($y,$m,1,0,0,0);
-          $date_1=&DateCalc_DateDelta($date_0,"+0:1:0:0:0:0:0",0);
+          $date_0=_Date_Join($y,$m,1,0,0,0);
+          $date_1=_DateCalc_DateDelta($date_0,"+0:1:0:0:0:0:0",0);
         } else {
-          $date_0=&Date_Join($y,  1,1,0,0,0);
-          $date_1=&Date_Join($y+1,1,1,0,0,0);
+          $date_0=_Date_Join($y,  1,1,0,0,0);
+          $date_1=_Date_Join($y+1,1,1,0,0,0);
         }
-        $date_b=&DateCalc($date_0,"-0:0:0:1:0:0:0",0);
+        $date_b=DateCalc($date_0,"-0:0:0:1:0:0:0",0);
         @recur0=(0,0,0,$num,0,0,0);
         @recur1=();
@@ -2266,6 +2156,6 @@
         $y=$Curr{"Y"}  if (! $y);
 
-        $date_0=&Date_Join($y,  1,1,0,0,0);
-        $date_1=&Date_Join($y+1,1,1,0,0,0);
+        $date_0=_Date_Join($y,  1,1,0,0,0);
+        $date_1=_Date_Join($y+1,1,1,0,0,0);
         $date_b=$date_0;
 
@@ -2282,6 +2172,6 @@
         $num=-1  if ($num !~ /^$D$/);
 
-        $date_0=&Date_Join($y,1,1,0,0,0);
-        $date_1=&Date_Join($y+1,1,1,0,0,0);
+        $date_0=_Date_Join($y,1,1,0,0,0);
+        $date_1=_Date_Join($y+1,1,1,0,0,0);
         $date_b=$date_0;
 
@@ -2301,11 +2191,11 @@
         if ($m) {
           $m=$mmm{lc($m)};
-          $date_0=&Date_Join($y,$m,1,0,0,0);
-          $date_1=&DateCalc_DateDelta($date_0,"+0:1:0:0:0:0:0",0);
+          $date_0=_Date_Join($y,$m,1,0,0,0);
+          $date_1=_DateCalc_DateDelta($date_0,"+0:1:0:0:0:0:0",0);
         } else {
-          $date_0=&Date_Join($y,1,1,0,0,0);
-          $date_1=&Date_Join($y+1,1,1,0,0,0);
+          $date_0=_Date_Join($y,1,1,0,0,0);
+          $date_1=_Date_Join($y+1,1,1,0,0,0);
         }
-        $date_b=&DateCalc($date_0,"-0:0:0:1:0:0:0",0);
+        $date_b=DateCalc($date_0,"-0:0:0:1:0:0:0",0);
 
         @recur0=(0,0,$num);
@@ -2395,12 +2285,12 @@
       # Y-M-W-D-H-MN-S
 
-      @y=&ReturnList($y);
+      @y=_ReturnList($y);
       foreach $y (@y) {
-        $y=&Date_FixYear($y)  if (length($y)==2);
-        return ()  if (length($y)!=4  ||  ! &IsInt($y));
+        $y=_Date_FixYear($y)  if (length($y)==2);
+        return ()  if (length($y)!=4  ||  ! _IsInt($y));
       }
 
-      $date0=&ParseDate("0000-01-01")          if (! $date0);
-      $date1=&ParseDate("9999-12-31 23:59:59") if (! $date1);
+      $date0=ParseDate("0000-01-01")          if (! $date0);
+      $date1=ParseDate("9999-12-31 23:59:59") if (! $date1);
 
       if ($m eq "0"  and  $w eq "0") {
@@ -2412,8 +2302,8 @@
           @d=(1);
         } else {
-          @d=&ReturnList($d);
+          @d=_ReturnList($d);
           return ()  if (! @d);
           foreach $d (@d) {
-            return ()  if (! &IsInt($d,-366,366)  ||  $d==0);
+            return ()  if (! _IsInt($d,-366,366)  ||  $d==0);
           }
         }
@@ -2421,11 +2311,11 @@
         @date=();
         foreach $yy (@y) {
-          my $diy = &Date_DaysInYear($yy);
+          my $diy = Date_DaysInYear($yy);
           foreach $d (@d) {
             my $tmpd = $d;
             $tmpd += ($diy+1)  if ($tmpd < 0);
-            next  if (! &IsInt($tmpd,1,$diy));
-            ($y,$m,$dd)=&Date_NthDayOfYear($yy,$tmpd);
-            push(@date, &Date_Join($y,$m,$dd,0,0,0));
+            next  if (! _IsInt($tmpd,1,$diy));
+            ($y,$m,$dd)=Date_NthDayOfYear($yy,$tmpd);
+            push(@date, _Date_Join($y,$m,$dd,0,0,0));
           }
         }
@@ -2437,8 +2327,8 @@
         # * Y-M-0-DOM-H-MN-S
 
-        @m=&ReturnList($m);
+        @m=_ReturnList($m);
         return ()  if (! @m);
         foreach $m (@m) {
-          return ()  if (! &IsInt($m,1,12));
+          return ()  if (! _IsInt($m,1,12));
         }
 
@@ -2446,8 +2336,8 @@
           @d=(1);
         } else {
-          @d=&ReturnList($d);
+          @d=_ReturnList($d);
           return ()  if (! @d);
           foreach $d (@d) {
-            return ()  if (! &IsInt($d,-31,31)  ||  $d==0);
+            return ()  if (! _IsInt($d,-31,31)  ||  $d==0);
           }
         }
@@ -2456,10 +2346,10 @@
         foreach $y (@y) {
           foreach $m (@m) {
-            my $dim = &Date_DaysInMonth($m,$y);
+            my $dim = Date_DaysInMonth($m,$y);
             foreach $d (@d) {
               my $tmpd = $d;
               $tmpd += ($dim+1)  if ($d<0);
-              next  if (! &IsInt($tmpd,1,$dim));
-              $date=&Date_Join($y,$m,$tmpd,0,0,0);
+              next  if (! _IsInt($tmpd,1,$dim));
+              $date=_Date_Join($y,$m,$tmpd,0,0,0);
               push(@date,$date);
             }
@@ -2473,8 +2363,8 @@
         # * Y-0-WOY-0-H-MN-S
 
-        @w=&ReturnList($w);
+        @w=_ReturnList($w);
         return ()  if (! @w);
         foreach $w (@w) {
-          return ()  if (! &IsInt($w,-53,53)  ||  $w==0);
+          return ()  if (! _IsInt($w,-53,53)  ||  $w==0);
         }
 
@@ -2482,9 +2372,9 @@
           @d=(1);
         } else {
-          @d=&ReturnList($d);
+          @d=_ReturnList($d);
           return ()  if (! @d);
           foreach $d (@d) {
             $d += 8  if ($d<0);
-            return ()  if (! &IsInt($d,1,7));
+            return ()  if (! _IsInt($d,1,7));
           }
         }
@@ -2506,6 +2396,6 @@
                 $date=Date_GetNext($date,$d,1);
               }
-              $date=&DateCalc_DateDelta($date,$del);
-              push(@date,$date)  if ( (&Date_Split($date))[0] == $y);
+              $date=_DateCalc_DateDelta($date,$del);
+              push(@date,$date)  if ( (_Date_Split($date))[0] == $y);
             }
           }
@@ -2518,15 +2408,15 @@
         # * Y-M-WOM-0-H-MN-S
 
-        @m=&ReturnList($m);
+        @m=_ReturnList($m);
         return ()  if (! @m);
-        @w=&ReturnList($w);
+        @w=_ReturnList($w);
         return ()  if (! @w);
         if ($d eq "0") {
           @d=(1);
         } else {
-          @d=&ReturnList($d);
+          @d=_ReturnList($d);
         }
 
-        @date=&Date_Recur_WoM(\@y,\@m,\@w,\@d);
+        @date=_Date_Recur_WoM(\@y,\@m,\@w,\@d);
         last RECUR;
       }
@@ -2550,8 +2440,8 @@
         return ()  if (! $dateb  &&  $y != 1);
 
-        @m=&ReturnList($m);
+        @m=_ReturnList($m);
         return ()  if (! @m);
         foreach $m (@m) {
-          return ()  if (! &IsInt($m,1,12));
+          return ()  if (! _IsInt($m,1,12));
         }
 
@@ -2559,16 +2449,16 @@
           @d = (1);
         } else {
-          @d=&ReturnList($d);
+          @d=_ReturnList($d);
           return ()  if (! @d);
           foreach $d (@d) {
-            return ()  if (! &IsInt($d,-31,31)  ||  $d==0);
+            return ()  if (! _IsInt($d,-31,31)  ||  $d==0);
           }
         }
 
         # We need to find years that are a multiple of $n from $y(base)
-        ($y0)=( &Date_Split($date0, 1) )[0];
-        ($y1)=( &Date_Split($date1, 1) )[0];
+        ($y0)=( _Date_Split($date0, 1) )[0];
+        ($y1)=( _Date_Split($date1, 1) )[0];
         if ($dateb) {
-          ($yb)=( &Date_Split($dateb, 1) )[0];
+          ($yb)=( _Date_Split($dateb, 1) )[0];
         } else {
           # If $y=1, there is no base year
@@ -2581,11 +2471,11 @@
             foreach $m (@m) {
               foreach $d (@d) {
-                my $dim  = &Date_DaysInMonth($m,$yy);
+                my $dim  = Date_DaysInMonth($m,$yy);
                 my $tmpd = $d;
                 if ($tmpd < 0) {
                   $tmpd += ($dim+1);
                 }
-                next  if (! &IsInt($tmpd,1,$dim));
-                $date=&Date_Join($yy,$m,$tmpd,0,0,0);
+                next  if (! _IsInt($tmpd,1,$dim));
+                $date=_Date_Join($yy,$m,$tmpd,0,0,0);
                 push(@date,$date);
               }
@@ -2601,7 +2491,7 @@
         return ()  if (! $dateb  &&  $y != 1);
 
-        @m=&ReturnList($m);
+        @m=_ReturnList($m);
         return ()  if (! @m);
-        @w=&ReturnList($w);
+        @w=_ReturnList($w);
         return ()  if (! @w);
 
@@ -2609,11 +2499,11 @@
           @d=(1);
         } else {
-          @d=&ReturnList($d);
+          @d=_ReturnList($d);
         }
 
-        ($y0)=( &Date_Split($date0, 1) )[0];
-        ($y1)=( &Date_Split($date1, 1) )[0];
+        ($y0)=( _Date_Split($date0, 1) )[0];
+        ($y1)=( _Date_Split($date1, 1) )[0];
         if ($dateb) {
-          ($yb)=( &Date_Split($dateb, 1) )[0];
+          ($yb)=( _Date_Split($dateb, 1) )[0];
         } else {
           # If $y=1, there is no base year
@@ -2627,5 +2517,5 @@
         }
 
-        @date=&Date_Recur_WoM(\@y,\@m,\@w,\@d);
+        @date=_Date_Recur_WoM(\@y,\@m,\@w,\@d);
         last RECUR;
       }
@@ -2649,8 +2539,8 @@
         $n=1  if ($n==0);
 
-        @w=&ReturnList($w);
+        @w=_ReturnList($w);
         return ()  if (! @w);
         foreach $w (@w) {
-          return ()  if ($w==0  ||  ! &IsInt($w,-53,53));
+          return ()  if ($w==0  ||  ! _IsInt($w,-53,53));
         }
 
@@ -2658,17 +2548,17 @@
           @d=(1);
         } else {
-          @d=&ReturnList($d);
+          @d=_ReturnList($d);
           return ()  if (! @d);
           foreach $d (@d) {
             $d += 8  if ($d<0);
-            return ()  if (! &IsInt($d,1,7));
+            return ()  if (! _IsInt($d,1,7));
           }
         }
 
         # We need to find years that are a multiple of $n from $y(base)
-        ($y0)=( &Date_Split($date0, 1) )[0];
-        ($y1)=( &Date_Split($date1, 1) )[0];
+        ($y0)=( _Date_Split($date0, 1) )[0];
+        ($y1)=( _Date_Split($date1, 1) )[0];
         if ($dateb) {
-          ($yb)=( &Date_Split($dateb, 1) )[0];
+          ($yb)=( _Date_Split($dateb, 1) )[0];
         } else {
           # If $y=1, there is no base year
@@ -2693,6 +2583,6 @@
                   $date=Date_GetNext($date,$d,1);
                 }
-                $date=&DateCalc($date,$del);
-                next  if ((&Date_Split($date))[0] != $yy);
+                $date=DateCalc($date,$del);
+                next  if ((_Date_Split($date))[0] != $yy);
                 push(@date,$date);
               }
@@ -2706,19 +2596,20 @@
         # Y-M * WOM-0-H-MN-S
         # Y-M * WOM-DOW-H-MN-S
-        return ()  if (! $dateb);
+        return ()  if (! $dateb  &&  ($y != 0  ||  $m != 1));
         @tmp=(@recur0);
         push(@tmp,0)  while ($#tmp<6);
         $delta=join(":",@tmp);
-        @tmp=&Date_Recur($date0,$date1,$dateb,$delta);
-
-        @w=&ReturnList($w);
+        $dateb=$date0  if (! $dateb);
+        @tmp=_Date_Recur($date0,$date1,$dateb,$delta);
+
+        @w=_ReturnList($w);
         @m=();
         if ($d eq "0") {
           @d=(1);
         } else {
-          @d=&ReturnList($d);
+          @d=_ReturnList($d);
         }
 
-        @date=&Date_Recur_WoM(\@tmp,\@m,\@w,\@d);
+        @date=_Date_Recur_WoM(\@tmp,\@m,\@w,\@d);
         last RECUR;
       }
@@ -2734,5 +2625,5 @@
         $y=1  if ($y==0 && $m==0 && $w==0);
         $delta="$y:$m:$w:0:0:0:0";
-        @date=&Date_Recur($date0,$date1,$dateb,$delta);
+        @date=_Date_Recur($date0,$date1,$dateb,$delta);
         last RECUR;
 
@@ -2744,15 +2635,15 @@
         return ()  if (! $dateb  &&  $y!=1);
 
-        @d=&ReturnList($d);
+        @d=_ReturnList($d);
         return ()  if (! @d);
         foreach $d (@d) {
-          return ()  if (! &IsInt($d,-366,366)  ||  $d==0);
+          return ()  if (! _IsInt($d,-366,366)  ||  $d==0);
         }
 
         # We need to find years that are a multiple of $n from $y(base)
-        ($y0)=( &Date_Split($date0, 1) )[0];
-        ($y1)=( &Date_Split($date1, 1) )[0];
+        ($y0)=( _Date_Split($date0, 1) )[0];
+        ($y1)=( _Date_Split($date1, 1) )[0];
         if ($dateb) {
-          ($yb)=( &Date_Split($dateb, 1) )[0];
+          ($yb)=( _Date_Split($dateb, 1) )[0];
         } else {
           # If $y=1, there is no base year
@@ -2761,12 +2652,12 @@
         @date=();
         for ($yy=$y0; $yy<=$y1; $yy++) {
-          my $diy = &Date_DaysInYear($yy);
+          my $diy = Date_DaysInYear($yy);
           if (($yy-$yb)%$n == 0) {
             foreach $d (@d) {
               my $tmpd = $d;
               $tmpd += ($diy+1)  if ($tmpd<0);
-              next  if (! &IsInt($tmpd,1,$diy));
-              ($y,$m,$dd)=&Date_NthDayOfYear($yy,$tmpd);
-              push(@date, &Date_Join($y,$m,$dd,0,0,0));
+              next  if (! _IsInt($tmpd,1,$diy));
+              ($y,$m,$dd)=Date_NthDayOfYear($yy,$tmpd);
+              push(@date, _Date_Join($y,$m,$dd,0,0,0));
             }
           }
@@ -2777,19 +2668,20 @@
 
         # Y-M-W * DOW-H-MN-S
-        return ()  if (! $dateb);
+        return ()  if (! $dateb  &&  ($y != 0  &&  $m != 0  &&  $w != 1));
         @tmp=(@recur0);
         push(@tmp,0)  while ($#tmp<6);
         $delta=join(":",@tmp);
 
-        @d=&ReturnList($d);
+        @d=_ReturnList($d);
         return ()  if (! @d);
         foreach $d (@d) {
           $d += 8  if ($d<0);
-          return ()  if (! &IsInt($d,1,7));
+          return ()  if (! _IsInt($d,1,7));
         }
 
         # Find out what DofW the basedate is.
-        @tmp2=&Date_Split($dateb, 1);
-        $tmp=&Date_DayOfWeek($tmp2[1],$tmp2[2],$tmp2[0]);
+        $dateb = $date0  if (! $dateb);
+        @tmp2=_Date_Split($dateb, 1);
+        $tmp=Date_DayOfWeek($tmp2[1],$tmp2[2],$tmp2[0]);
 
         @date=();
@@ -2801,10 +2693,10 @@
                 ($tmp>=$Cnf{"FirstDay"} && $d>$tmp) ||
                 ($tmp<$d && $d<$Cnf{"FirstDay"})) {
-              $date_b=&Date_GetNext($date_b,$d);
+              $date_b=Date_GetNext($date_b,$d);
             } else {
-              $date_b=&Date_GetPrev($date_b,$d);
+              $date_b=Date_GetPrev($date_b,$d);
             }
           }
-          push(@date,&Date_Recur($date0,$date1,$date_b,$delta));
+          push(@date,_Date_Recur($date0,$date1,$date_b,$delta));
         }
         last RECUR;
@@ -2813,25 +2705,26 @@
 
         # Y-M-0 * DOM-H-MN-S
-        return ()  if (! $dateb);
+        return ()  if (! $dateb  &&  ($y != 0  &&  $m != 1));
         @tmp=(@recur0);
         push(@tmp,0)  while ($#tmp<6);
         $delta=join(":",@tmp);
 
-        @d=&ReturnList($d);
+        @d=_ReturnList($d);
         return ()  if (! @d);
         foreach $d (@d) {
-          return ()  if ($d==0  ||  ! &IsInt($d,-31,31));
+          return ()  if ($d==0  ||  ! _IsInt($d,-31,31));
         }
-
-        @tmp2=&Date_Recur($date0,$date1,$dateb,$delta);
+        $dateb = $date0  if (! $dateb);
+
+        @tmp2=_Date_Recur($date0,$date1,$dateb,$delta);
         @date=();
         foreach $date (@tmp2) {
-          ($y,$m)=( &Date_Split($date, 1) )[0..1];
-          my $dim=&Date_DaysInMonth($m,$y);
+          ($y,$m)=( _Date_Split($date, 1) )[0..1];
+          my $dim=Date_DaysInMonth($m,$y);
           foreach $d (@d) {
             my $tmpd = $d;
             $tmpd += ($dim+1)  if ($tmpd<0);
-            next  if (! &IsInt($tmpd,1,$dim));
-            push(@date,&Date_Join($y,$m,$tmpd,0,0,0));
+            next  if (! _IsInt($tmpd,1,$dim));
+            push(@date,_Date_Join($y,$m,$tmpd,0,0,0));
           }
         }
@@ -2849,4 +2742,13 @@
       # Y-M-W-D-H-MN * S
       # Y-M-W-D-H-S
+      if (($#recur0 == 3  &&
+           ($y == 0  &&  $m == 0  &&  $w == 0  &&  $d == 1)) ||
+          ($#recur0 == 4  &&
+           ($y == 0  &&  $m == 0  &&  $w == 0  &&  $d == 0  &&  $h == 1)) ||
+          ($#recur0 == 5  &&
+           ($y == 0  &&  $m == 0  &&  $w == 0  &&  $d == 0  &&  $h == 0  &&
+            $mn == 1))) {
+         $dateb = $date0;
+      }
       return ()  if (! $dateb);
       @tmp=(@recur0);
@@ -2854,5 +2756,5 @@
       $delta=join(":",@tmp);
       return ()  if ($delta !~ /[1-9]/); # return if "0:0:0:0:0:0:0"
-      @date=&Date_Recur($date0,$date1,$dateb,$delta);
+      @date=_Date_Recur($date0,$date1,$dateb,$delta);
       if (@recur1) {
         unshift(@recur1,-1)  while ($#recur1<2);
@@ -2867,5 +2769,5 @@
     last RECUR;
   }
-  @date=&Date_RecurSetTime($date0,$date1,\@date,@time)  if (@time);
+  @date=_Date_RecurSetTime($date0,$date1,\@date,@time)  if (@time);
 
   #
@@ -2886,7 +2788,7 @@
         foreach $date (@date) {
           if ($forw) {
-            push(@tmp, &Date_GetNext($date,$d,$today));
+            push(@tmp, Date_GetNext($date,$d,$today));
           } else {
-            push(@tmp, &Date_GetPrev($date,$d,$today));
+            push(@tmp, Date_GetPrev($date,$d,$today));
           }
         }
@@ -2909,6 +2811,6 @@
           for ($i=1; $i<=$n; $i++) {
             while (1) {
-              $date=&DateCalc($date,"${sign}0:0:0:1:0:0:0");
-              last if (! $work  ||  &Date_IsWorkDay($date,0));
+              $date=DateCalc($date,"${sign}0:0:0:1:0:0:0");
+              last if (! $work  ||  Date_IsWorkDay($date,0));
             }
           }
@@ -2931,5 +2833,5 @@
       DATE: foreach $date (@date) {
           $df=$db=$date;
-          if (&Date_IsWorkDay($date)) {
+          if (Date_IsWorkDay($date)) {
             push(@tmp,$date);
             next DATE;
@@ -2937,9 +2839,9 @@
           while (1) {
             if ($forw) {
-              $d=$df=&DateCalc($df,"+0:0:0:1:0:0:0");
+              $d=$df=DateCalc($df,"+0:0:0:1:0:0:0");
             } else {
-              $d=$db=&DateCalc($db,"-0:0:0:1:0:0:0");
+              $d=$db=DateCalc($db,"-0:0:0:1:0:0:0");
             }
-            if (&Date_IsWorkDay($d)) {
+            if (Date_IsWorkDay($d)) {
               push(@tmp,$d);
               next DATE;
@@ -2955,9 +2857,9 @@
         @tmp=();
         foreach $date (@date) {
-          ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1);
-          ($m,$d)=&Date_Easter($y);
-          $date=&Date_Join($y,$m,$d,$h,$mn,$s);
-          next  if (&Date_Cmp($date,$date0)<0  ||
-                    &Date_Cmp($date,$date1)>0);
+          ($y,$m,$d,$h,$mn,$s)=_Date_Split($date, 1);
+          ($m,$d)=_Date_Easter($y);
+          $date=_Date_Join($y,$m,$d,$h,$mn,$s);
+          next  if (Date_Cmp($date,$date0)<0  ||
+                    Date_Cmp($date,$date1)>0);
           push(@tmp,$date);
         }
@@ -2974,5 +2876,5 @@
   print "DEBUG: Date_GetPrev\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date,$dow,$today,$hr,$min,$sec)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
   my($y,$m,$d,$h,$mn,$s,$err,$curr_dow,%dow,$num,$delta,$th,$tm,$ts,
      $adjust,$curr)=();
@@ -2981,15 +2883,15 @@
   $sec="00"  if (defined $sec  &&  $sec eq "0");
 
-  if (! &Date_Split($date)) {
-    $date=&ParseDateString($date);
+  if (! _Date_Split($date)) {
+    $date=ParseDateString($date);
     return ""  if (! $date);
   }
   $curr=$date;
-  ($y,$m,$d)=( &Date_Split($date, 1) )[0..2];
+  ($y,$m,$d)=( _Date_Split($date, 1) )[0..2];
 
   if ($dow) {
-    $curr_dow=&Date_DayOfWeek($m,$d,$y);
+    $curr_dow=Date_DayOfWeek($m,$d,$y);
     %dow=%{ $Lang{$Cnf{"Language"}}{"WeekH"} };
-    if (&IsInt($dow)) {
+    if (_IsInt($dow)) {
       return ""  if ($dow<1  ||  $dow>7);
     } else {
@@ -2998,18 +2900,18 @@
     }
     if ($dow == $curr_dow) {
-      $date=&DateCalc_DateDelta($date,"-0:0:1:0:0:0:0",\$err,0)  if (! $today);
+      $date=_DateCalc_DateDelta($date,"-0:0:1:0:0:0:0",\$err,0)  if (! $today);
       $adjust=1  if ($today==2);
     } else {
       $dow -= 7  if ($dow>$curr_dow); # make sure previous day is less
       $num = $curr_dow - $dow;
-      $date=&DateCalc_DateDelta($date,"-0:0:0:$num:0:0:0",\$err,0);
-    }
-    $date=&Date_SetTime($date,$hr,$min,$sec)  if (defined $hr);
-    $date=&DateCalc_DateDelta($date,"-0:0:1:0:0:0:0",\$err,0)
-      if ($adjust  &&  &Date_Cmp($date,$curr)>0);
+      $date=_DateCalc_DateDelta($date,"-0:0:0:$num:0:0:0",\$err,0);
+    }
+    $date=Date_SetTime($date,$hr,$min,$sec)  if (defined $hr);
+    $date=_DateCalc_DateDelta($date,"-0:0:1:0:0:0:0",\$err,0)
+      if ($adjust  &&  Date_Cmp($date,$curr)>0);
 
   } else {
-    ($h,$mn,$s)=( &Date_Split($date, 1) )[3..5];
-    ($th,$tm,$ts)=&Date_ParseTime($hr,$min,$sec);
+    ($h,$mn,$s)=( _Date_Split($date, 1) )[3..5];
+    ($th,$tm,$ts)=_Date_ParseTime($hr,$min,$sec);
     if ($hr) {
       ($hr,$min,$sec)=($th,$tm,$ts);
@@ -3025,9 +2927,9 @@
     }
 
-    $d=&Date_SetTime($date,$hr,$min,$sec);
+    $d=Date_SetTime($date,$hr,$min,$sec);
     if ($today) {
-      $d=&DateCalc_DateDelta($d,$delta,\$err,0)  if (&Date_Cmp($d,$date)>0);
+      $d=_DateCalc_DateDelta($d,$delta,\$err,0)  if (Date_Cmp($d,$date)>0);
     } else {
-      $d=&DateCalc_DateDelta($d,$delta,\$err,0)  if (&Date_Cmp($d,$date)>=0);
+      $d=_DateCalc_DateDelta($d,$delta,\$err,0)  if (Date_Cmp($d,$date)>=0);
     }
     $date=$d;
@@ -3039,5 +2941,5 @@
   print "DEBUG: Date_GetNext\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date,$dow,$today,$hr,$min,$sec)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
   my($y,$m,$d,$h,$mn,$s,$err,$curr_dow,%dow,$num,$delta,$th,$tm,$ts,
      $adjust,$curr)=();
@@ -3046,15 +2948,15 @@
   $sec="00"  if (defined $sec  &&  $sec eq "0");
 
-  if (! &Date_Split($date)) {
-    $date=&ParseDateString($date);
+  if (! _Date_Split($date)) {
+    $date=ParseDateString($date);
     return ""  if (! $date);
   }
   $curr=$date;
-  ($y,$m,$d)=( &Date_Split($date, 1) )[0..2];
+  ($y,$m,$d)=( _Date_Split($date, 1) )[0..2];
 
   if ($dow) {
-    $curr_dow=&Date_DayOfWeek($m,$d,$y);
+    $curr_dow=Date_DayOfWeek($m,$d,$y);
     %dow=%{ $Lang{$Cnf{"Language"}}{"WeekH"} };
-    if (&IsInt($dow)) {
+    if (_IsInt($dow)) {
       return ""  if ($dow<1  ||  $dow>7);
     } else {
@@ -3063,18 +2965,18 @@
     }
     if ($dow == $curr_dow) {
-      $date=&DateCalc_DateDelta($date,"+0:0:1:0:0:0:0",\$err,0)  if (! $today);
+      $date=_DateCalc_DateDelta($date,"+0:0:1:0:0:0:0",\$err,0)  if (! $today);
       $adjust=1  if ($today==2);
     } else {
       $curr_dow -= 7  if ($curr_dow>$dow); # make sure next date is greater
       $num = $dow - $curr_dow;
-      $date=&DateCalc_DateDelta($date,"+0:0:0:$num:0:0:0",\$err,0);
-    }
-    $date=&Date_SetTime($date,$hr,$min,$sec)  if (defined $hr);
-    $date=&DateCalc_DateDelta($date,"+0:0:1:0:0:0:0",\$err,0)
-      if ($adjust  &&  &Date_Cmp($date,$curr)<0);
+      $date=_DateCalc_DateDelta($date,"+0:0:0:$num:0:0:0",\$err,0);
+    }
+    $date=Date_SetTime($date,$hr,$min,$sec)  if (defined $hr);
+    $date=_DateCalc_DateDelta($date,"+0:0:1:0:0:0:0",\$err,0)
+      if ($adjust  &&  Date_Cmp($date,$curr)<0);
 
   } else {
-    ($h,$mn,$s)=( &Date_Split($date, 1) )[3..5];
-    ($th,$tm,$ts)=&Date_ParseTime($hr,$min,$sec);
+    ($h,$mn,$s)=( _Date_Split($date, 1) )[3..5];
+    ($th,$tm,$ts)=_Date_ParseTime($hr,$min,$sec);
     if ($hr) {
       ($hr,$min,$sec)=($th,$tm,$ts);
@@ -3090,9 +2992,9 @@
     }
 
-    $d=&Date_SetTime($date,$hr,$min,$sec);
+    $d=Date_SetTime($date,$hr,$min,$sec);
     if ($today) {
-      $d=&DateCalc_DateDelta($d,$delta,\$err,0)  if (&Date_Cmp($d,$date)<0);
+      $d=_DateCalc_DateDelta($d,$delta,\$err,0)  if (Date_Cmp($d,$date)<0);
     } else {
-      $d=&DateCalc_DateDelta($d,$delta,\$err,0)  if (&Date_Cmp($d,$date)<1);
+      $d=_DateCalc_DateDelta($d,$delta,\$err,0)  if (Date_Cmp($d,$date)<1);
     }
     $date=$d;
@@ -3105,10 +3007,10 @@
   print "DEBUG: Date_IsHoliday\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
-  $date=&ParseDateString($date);
+  Date_Init()  if (! $Curr{"InitDone"});
+  $date=ParseDateString($date);
   return undef  if (! $date);
-  $date=&Date_SetTime($date,0,0,0);
-  my($y)=(&Date_Split($date, 1))[0];
-  &Date_UpdateHolidays($y)  if (! exists $Holiday{"dates"}{$y});
+  $date=Date_SetTime($date,0,0,0);
+  my($y)=(_Date_Split($date, 1))[0];
+  _Date_UpdateHolidays($y)  if (! exists $Holiday{"dates"}{$y});
   return undef  if (! exists $Holiday{"dates"}{$y}{$date});
   my($name)=$Holiday{"dates"}{$y}{$date};
@@ -3120,19 +3022,19 @@
   print "DEBUG: Events_List\n"  if ($Curr{"Debug"} =~ /trace/);
   my(@args)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
-  &Events_ParseRaw();
+  Date_Init()  if (! $Curr{"InitDone"});
+  _Events_ParseRaw();
 
   my($tmp,$date0,$date1,$flag);
-  $date0=&ParseDateString($args[0]);
+  $date0=ParseDateString($args[0]);
   warn "Invalid date $args[0]", return undef  if (! $date0);
 
   if ($#args == 0) {
-    return &Events_Calc($date0);
+    return _Events_Calc($date0);
   }
 
   if ($args[1]) {
-    $date1=&ParseDateString($args[1]);
+    $date1=ParseDateString($args[1]);
     warn "Invalid date $args[1]\n", return undef  if (! $date1);
-    if (&Date_Cmp($date0,$date1)>0) {
+    if (Date_Cmp($date0,$date1)>0) {
       $tmp=$date1;
       $date1=$date0;
@@ -3140,9 +3042,9 @@
     }
   } else {
-    $date0=&Date_SetTime($date0,"00:00:00");
-    $date1=&DateCalc_DateDelta($date0,"+0:0:0:1:0:0:0");
-  }
-
-  $tmp=&Events_Calc($date0,$date1);
+    $date0=Date_SetTime($date0,"00:00:00");
+    $date1=_DateCalc_DateDelta($date0,"+0:0:0:1:0:0:0");
+  }
+
+  $tmp=_Events_Calc($date0,$date1);
 
   $flag=$args[2];
@@ -3157,8 +3059,8 @@
       ($date0,$tmp)=splice(@tmp,0,2);
       $date1=$tmp[0];
-      $delta=&DateCalc_DateDate($date0,$date1);
+      $delta=_DateCalc_DateDate($date0,$date1);
       foreach $flag (@$tmp) {
         if (exists $ret{$flag}) {
-          $ret{$flag}=&DateCalc_DeltaDelta($ret{$flag},$delta);
+          $ret{$flag}=_DateCalc_DeltaDelta($ret{$flag},$delta);
         } else {
           $ret{$flag}=$delta;
@@ -3172,9 +3074,9 @@
       ($date0,$tmp)=splice(@tmp,0,2);
       $date1=$tmp[0];
-      $delta=&DateCalc_DateDate($date0,$date1);
+      $delta=_DateCalc_DateDate($date0,$date1);
       $flag=join("+",sort { Date_Cmp($a,$b) } @$tmp);
       next  if (! $flag);
       if (exists $ret{$flag}) {
-        $ret{$flag}=&DateCalc_DeltaDelta($ret{$flag},$delta);
+        $ret{$flag}=_DateCalc_DeltaDelta($ret{$flag},$delta);
       } else {
         $ret{$flag}=$delta;
@@ -3195,18 +3097,18 @@
   print "DEBUG: Date_SetTime\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date,$h,$mn,$s)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
   my($y,$m,$d)=();
 
-  if (! &Date_Split($date)) {
-    $date=&ParseDateString($date);
+  if (! _Date_Split($date)) {
+    $date=ParseDateString($date);
     return ""  if (! $date);
   }
 
-  ($y,$m,$d)=( &Date_Split($date, 1) )[0..2];
-  ($h,$mn,$s)=&Date_ParseTime($h,$mn,$s);
+  ($y,$m,$d)=( _Date_Split($date, 1) )[0..2];
+  ($h,$mn,$s)=_Date_ParseTime($h,$mn,$s);
 
   my($ampm,$wk);
-  return ""  if (&Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
-  &Date_Join($y,$m,$d,$h,$mn,$s);
+  return ""  if (_Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk));
+  _Date_Join($y,$m,$d,$h,$mn,$s);
 }
 
@@ -3217,10 +3119,10 @@
   $nocheck=0  if (! defined $nocheck);
 
-  ($y,$m,$d,$h,$mn,$s)=&Date_Split($date);
+  ($y,$m,$d,$h,$mn,$s)=_Date_Split($date);
 
   if (! $y) {
-    $date=&ParseDateString($date);
+    $date=ParseDateString($date);
     return "" if (! $date);
-    ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1);
+    ($y,$m,$d,$h,$mn,$s)=_Date_Split($date, 1);
   }
 
@@ -3241,6 +3143,6 @@
   }
 
-  $date=&Date_Join($y,$m,$d,$h,$mn,$s);
-  return $date  if ($nocheck  ||  &Date_Split($date));
+  $date=_Date_Join($y,$m,$d,$h,$mn,$s);
+  return $date  if ($nocheck  ||  _Date_Split($date));
   return "";
 }
@@ -3261,7 +3163,7 @@
   print "DEBUG: Date_DaysInMonth\n"  if ($Curr{"Debug"} =~ /trace/);
   my($m,$y)=@_;
-  $y=&Date_FixYear($y)  if (length($y)!=4);
+  $y=_Date_FixYear($y)  if (length($y)!=4);
   my(@d_in_m)=(0,31,28,31,30,31,30,31,31,30,31,30,31);
-  $d_in_m[2]=29  if (&Date_LeapYear($y));
+  $d_in_m[2]=29  if (Date_LeapYear($y));
   return $d_in_m[$m];
 }
@@ -3270,9 +3172,9 @@
   print "DEBUG: Date_DayOfWeek\n"  if ($Curr{"Debug"} =~ /trace/);
   my($m,$d,$y)=@_;
-  $y=&Date_FixYear($y)  if (length($y)!=4);
+  $y=_Date_FixYear($y)  if (length($y)!=4);
   my($dayofweek,$dec31)=();
 
   $dec31=5;                     # Dec 31, 1BC was Friday
-  $dayofweek=(&Date_DaysSince1BC($m,$d,$y)+$dec31) % 7;
+  $dayofweek=(Date_DaysSince1BC($m,$d,$y)+$dec31) % 7;
   $dayofweek=7  if ($dayofweek==0);
   return $dayofweek;
@@ -3284,8 +3186,8 @@
   print "DEBUG: Date_SecsSince1970\n"  if ($Curr{"Debug"} =~ /trace/);
   my($m,$d,$y,$h,$mn,$s)=@_;
-  $y=&Date_FixYear($y)  if (length($y)!=4);
+  $y=_Date_FixYear($y)  if (length($y)!=4);
   my($sec_now,$sec_70)=();
-  $sec_now=(&Date_DaysSince1BC($m,$d,$y)-1)*24*3600 + $h*3600 + $mn*60 + $s;
-# $sec_70 =(&Date_DaysSince1BC(1,1,1970)-1)*24*3600;
+  $sec_now=(Date_DaysSince1BC($m,$d,$y)-1)*24*3600 + $h*3600 + $mn*60 + $s;
+# $sec_70 =(Date_DaysSince1BC(1,1,1970)-1)*24*3600;
   $sec_70 =62167219200;
   return ($sec_now-$sec_70);
@@ -3295,8 +3197,8 @@
   print "DEBUG: Date_SecsSince1970GMT\n"  if ($Curr{"Debug"} =~ /trace/);
   my($m,$d,$y,$h,$mn,$s)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
-  $y=&Date_FixYear($y)  if (length($y)!=4);
-
-  my($sec)=&Date_SecsSince1970($m,$d,$y,$h,$mn,$s);
+  Date_Init()  if (! $Curr{"InitDone"});
+  $y=_Date_FixYear($y)  if (length($y)!=4);
+
+  my($sec)=Date_SecsSince1970($m,$d,$y,$h,$mn,$s);
   return $sec   if ($Cnf{"ConvTZ"} eq "IGNORE");
 
@@ -3316,5 +3218,5 @@
   print "DEBUG: Date_DaysSince1BC\n"  if ($Curr{"Debug"} =~ /trace/);
   my($m,$d,$y)=@_;
-  $y=&Date_FixYear($y)  if (length($y)!=4);
+  $y=_Date_FixYear($y)  if (length($y)!=4);
   my($Ny,$N4,$N100,$N400,$dayofyear,$days)=();
   my($cc,$yy)=();
@@ -3339,5 +3241,5 @@
   $N400=0       if ($y==0);
 
-  $dayofyear=&Date_DayOfYear($m,$d,$y);
+  $dayofyear=Date_DayOfYear($m,$d,$y);
   $days= $Ny*365 + $N4 - $N100 + $N400 + $dayofyear;
 
@@ -3348,9 +3250,9 @@
   print "DEBUG: Date_DayOfYear\n"  if ($Curr{"Debug"} =~ /trace/);
   my($m,$d,$y)=@_;
-  $y=&Date_FixYear($y)  if (length($y)!=4);
+  $y=_Date_FixYear($y)  if (length($y)!=4);
   # DinM    = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
   my(@days) = ( 0, 31, 59, 90,120,151,181,212,243,273,304,334,365);
   my($ly)=0;
-  $ly=1  if ($m>2 && &Date_LeapYear($y));
+  $ly=1  if ($m>2 && Date_LeapYear($y));
   return ($days[$m-1]+$d+$ly);
 }
@@ -3359,6 +3261,6 @@
   print "DEBUG: Date_DaysInYear\n"  if ($Curr{"Debug"} =~ /trace/);
   my($y)=@_;
-  $y=&Date_FixYear($y)  if (length($y)!=4);
-  return 366  if (&Date_LeapYear($y));
+  $y=_Date_FixYear($y)  if (length($y)!=4);
+  return 366  if (Date_LeapYear($y));
   return 365;
 }
@@ -3367,9 +3269,9 @@
   print "DEBUG: Date_WeekOfYear\n"  if ($Curr{"Debug"} =~ /trace/);
   my($m,$d,$y,$f)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
-  $y=&Date_FixYear($y)  if (length($y)!=4);
+  Date_Init()  if (! $Curr{"InitDone"});
+  $y=_Date_FixYear($y)  if (length($y)!=4);
 
   my($day,$dow,$doy)=();
-  $doy=&Date_DayOfYear($m,$d,$y);
+  $doy=Date_DayOfYear($m,$d,$y);
 
   # The current DayOfYear and DayOfWeek
@@ -3379,5 +3281,5 @@
     $day=4;
   }
-  $dow=&Date_DayOfWeek(1,$day,$y);
+  $dow=Date_DayOfWeek(1,$day,$y);
 
   # Move back to the first day of week 1.
@@ -3392,5 +3294,5 @@
   print "DEBUG: Date_LeapYear\n"  if ($Curr{"Debug"} =~ /trace/);
   my($y)=@_;
-  $y=&Date_FixYear($y)  if (length($y)!=4);
+  $y=_Date_FixYear($y)  if (length($y)!=4);
   return 0 unless $y % 4 == 0;
   return 1 unless $y % 100 == 0;
@@ -3402,5 +3304,5 @@
   print "DEBUG: Date_DaySuffix\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
   return $Lang{$Cnf{"Language"}}{"DoML"}[$d-1];
 }
@@ -3409,5 +3311,5 @@
   print "DEBUG: Date_ConvTZ\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date,$from,$to,$level)=@_;
-  if (not Date_Split($date)) {
+  if (not _Date_Split($date)) {
     my $err = "date passed in ('$date') is not a Date::Manip object";
     if (! $level) {
@@ -3419,5 +3321,5 @@
   }
 
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
   my($gmt)=();
 
@@ -3460,5 +3362,5 @@
   my($s1,$h1,$m1,$s2,$h2,$m2,$d,$h,$m,$sign,$delta,$err,$yr,$mon,$sec)=();
   # We're going to try to do the calculation without calling DateCalc.
-  ($yr,$mon,$d,$h,$m,$sec)=&Date_Split($date, 1);
+  ($yr,$mon,$d,$h,$m,$sec)=_Date_Split($date, 1);
 
   # Convert $date from $from to GMT
@@ -3494,6 +3396,6 @@
     $h -= $delta*24;
     if (($d + $delta) > 28) {
-      $date=&Date_Join($yr,$mon,$d,$h,$m,$sec);
-      return &DateCalc_DateDelta($date,"+0:0:0:$delta:0:0:0",\$err,0);
+      $date=_Date_Join($yr,$mon,$d,$h,$m,$sec);
+      return _DateCalc_DateDelta($date,"+0:0:0:$delta:0:0:0",\$err,0);
     }
     $d+= $delta;
@@ -3502,10 +3404,10 @@
     $h += $delta*24;
     if (($d - $delta) < 1) {
-      $date=&Date_Join($yr,$mon,$d,$h,$m,$sec);
-      return &DateCalc_DateDelta($date,"-0:0:0:$delta:0:0:0",\$err,0);
+      $date=_Date_Join($yr,$mon,$d,$h,$m,$sec);
+      return _DateCalc_DateDelta($date,"-0:0:0:$delta:0:0:0",\$err,0);
     }
     $d-= $delta;
   }
-  return &Date_Join($yr,$mon,$d,$h,$m,$sec);
+  return _Date_Join($yr,$mon,$d,$h,$m,$sec);
 }
 
@@ -3513,5 +3415,5 @@
   print "DEBUG: Date_TimeZone\n"  if ($Curr{"Debug"} =~ /trace/);
   my($null,$tz,@tz,$std,$dst,$time,$isdst,$tmp,$in)=();
-  &Date_Init()  if (! $Curr{"InitDone"});
+  Date_Init()  if (! $Curr{"InitDone"});
 
   # Get timezones from all of the relevant places
@@ -3560,5 +3462,5 @@
         }
       }
-      push(@tz,$tz);
+      push(@tz,$tz)  if (defined $tz);
     } else {
       # We need to satisfy taint checking, but also look in all the
@@ -3574,5 +3476,5 @@
 	$tz=(split(/\s+/,$tz))[4];
       }
-      push(@tz,$tz);
+      push(@tz,$tz)  if (defined $tz);
     }
   }
@@ -3607,4 +3509,6 @@
     $in->close;
   }
+  
+  print STDERR "Found time zones: @tz\n";
 
   # Now parse each one to find the first valid one.
@@ -3645,5 +3549,5 @@
   }
 
-  confess "ERROR: Date::Manip unable to determine Time Zone from @tz.\n";
+  confess "ERROR: Date::Manip unable to determine Time Zone.\n";
 }
 
@@ -3654,13 +3558,13 @@
   print "DEBUG: Date_IsWorkDay\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date,$time)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
-  $date=&ParseDateString($date);
+  Date_Init()  if (! $Curr{"InitDone"});
+  $date=ParseDateString($date);
   return ""  if (! $date);
   my($d)=$date;
-  $d=&Date_SetTime($date,$Cnf{"WorkDayBeg"})  if (! $time);
+  $d=Date_SetTime($date,$Cnf{"WorkDayBeg"})  if (! $time);
 
   my($y,$mon,$day,$h,$m,$s,$dow)=();
-  ($y,$mon,$day,$h,$m,$s)=&Date_Split($d, 1);
-  $dow=&Date_DayOfWeek($mon,$day,$y);
+  ($y,$mon,$day,$h,$m,$s)=_Date_Split($d, 1);
+  $dow=Date_DayOfWeek($mon,$day,$y);
 
   return 0  if ($dow<$Cnf{"WorkWeekBeg"} or
@@ -3672,7 +3576,7 @@
     # There will be recursion problems if we ever end up here twice.
     $Holiday{"dates"}{$y}={};
-    &Date_UpdateHolidays($y)
-  }
-  $d=&Date_SetTime($date,"00:00:00");
+    _Date_UpdateHolidays($y)
+  }
+  $d=Date_SetTime($date,"00:00:00");
   return 0  if (exists $Holiday{"dates"}{$y}{$d});
   1;
@@ -3690,18 +3594,18 @@
   print "DEBUG: Date_NextWorkDay\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date,$off,$time)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
-  $date=&ParseDateString($date);
+  Date_Init()  if (! $Curr{"InitDone"});
+  $date=ParseDateString($date);
   my($err)=();
 
-  if (! &Date_IsWorkDay($date,$time)) {
+  if (! Date_IsWorkDay($date,$time)) {
     if ($time) {
       while (1) {
-        $date=&Date_GetNext($date,undef,0,$Cnf{"WorkDayBeg"});
-        last  if (&Date_IsWorkDay($date,$time));
+        $date=Date_GetNext($date,undef,0,$Cnf{"WorkDayBeg"});
+        last  if (Date_IsWorkDay($date,$time));
       }
     } else {
       while (1) {
-        $date=&DateCalc_DateDelta($date,"+0:0:0:1:0:0:0",\$err,0);
-        last  if (&Date_IsWorkDay($date,$time));
+        $date=_DateCalc_DateDelta($date,"+0:0:0:1:0:0:0",\$err,0);
+        last  if (Date_IsWorkDay($date,$time));
       }
     }
@@ -3710,6 +3614,6 @@
   while ($off>0) {
     while (1) {
-      $date=&DateCalc_DateDelta($date,"+0:0:0:1:0:0:0",\$err,0);
-      last  if (&Date_IsWorkDay($date,$time));
+      $date=_DateCalc_DateDelta($date,"+0:0:0:1:0:0:0",\$err,0);
+      last  if (Date_IsWorkDay($date,$time));
     }
     $off--;
@@ -3732,22 +3636,22 @@
   print "DEBUG: Date_PrevWorkDay\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date,$off,$time)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
-  $date=&ParseDateString($date);
+  Date_Init()  if (! $Curr{"InitDone"});
+  $date=ParseDateString($date);
   my($err)=();
 
-  if (! &Date_IsWorkDay($date,$time)) {
+  if (! Date_IsWorkDay($date,$time)) {
     if ($time) {
       while (1) {
-        $date=&Date_GetPrev($date,undef,0,$Cnf{"WorkDayEnd"});
-        last  if (&Date_IsWorkDay($date,$time));
+        $date=Date_GetPrev($date,undef,0,$Cnf{"WorkDayEnd"});
+        last  if (Date_IsWorkDay($date,$time));
       }
       while (1) {
-        $date=&Date_GetNext($date,undef,0,$Cnf{"WorkDayBeg"});
-        last  if (&Date_IsWorkDay($date,$time));
+        $date=Date_GetNext($date,undef,0,$Cnf{"WorkDayBeg"});
+        last  if (Date_IsWorkDay($date,$time));
       }
     } else {
       while (1) {
-        $date=&DateCalc_DateDelta($date,"-0:0:0:1:0:0:0",\$err,0);
-        last  if (&Date_IsWorkDay($date,$time));
+        $date=_DateCalc_DateDelta($date,"-0:0:0:1:0:0:0",\$err,0);
+        last  if (Date_IsWorkDay($date,$time));
       }
     }
@@ -3756,6 +3660,6 @@
   while ($off>0) {
     while (1) {
-      $date=&DateCalc_DateDelta($date,"-0:0:0:1:0:0:0",\$err,0);
-      last  if (&Date_IsWorkDay($date,$time));
+      $date=_DateCalc_DateDelta($date,"-0:0:0:1:0:0:0",\$err,0);
+      last  if (Date_IsWorkDay($date,$time));
     }
     $off--;
@@ -3770,10 +3674,10 @@
   print "DEBUG: Date_NearestWorkDay\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date,$tomorrow)=@_;
-  &Date_Init()  if (! $Curr{"InitDone"});
-  $date=&ParseDateString($date);
+  Date_Init()  if (! $Curr{"InitDone"});
+  $date=ParseDateString($date);
   my($a,$b,$dela,$delb,$err)=();
   $tomorrow=$Cnf{"TomorrowFirst"}  if (! defined $tomorrow);
 
-  return $date  if (&Date_IsWorkDay($date));
+  return $date  if (Date_IsWorkDay($date));
 
   # Find the nearest one.
@@ -3788,12 +3692,12 @@
 
   while (1) {
-    $a=&DateCalc_DateDelta($a,$dela,\$err);
-    return $a  if (&Date_IsWorkDay($a));
-    $b=&DateCalc_DateDelta($b,$delb,\$err);
-    return $b  if (&Date_IsWorkDay($b));
-  }
-}
-
-# &Date_NthDayOfYear($y,$n);
+    $a=_DateCalc_DateDelta($a,$dela,\$err);
+    return $a  if (Date_IsWorkDay($a));
+    $b=_DateCalc_DateDelta($b,$delb,\$err);
+    return $b  if (Date_IsWorkDay($b));
+  }
+}
+
+# Date_NthDayOfYear($y,$n);
 #   Returns a list of (YYYY,MM,DD,HH,MM,SS) for the Nth day of the year.
 sub Date_NthDayOfYear {
@@ -3804,6 +3708,6 @@
   $n=1       if (! defined $n  or  $n eq "");
   $n+=0;     # to turn 023 into 23
-  $y=&Date_FixYear($y)  if (length($y)<4);
-  my $leap=&Date_LeapYear($y);
+  $y=_Date_FixYear($y)  if (length($y)<4);
+  my $leap=Date_LeapYear($y);
   return ()  if ($n<1);
   return ()  if ($n >= ($leap ? 367 : 366));
@@ -3856,6 +3760,6 @@
 #   $hash   = { key1=>val1 key2=>val2 ... }
 
-sub Date_InitHash {
-  print "DEBUG: Date_InitHash\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_InitHash {
+  print "DEBUG: _Date_InitHash\n"  if ($Curr{"Debug"} =~ /trace/);
   my($data,$regexp,$opts,$hash)=@_;
   my(@data)=@$data;
@@ -3879,5 +3783,5 @@
   if ($regexp) {
     @list=keys(%$hash);
-    @list=sort sortByLength(@list)  if ($sort);
+    @list=sort _sortByLength(@list)  if ($sort);
     if ($escape) {
       foreach $val (@list) {
@@ -3918,6 +3822,6 @@
 #   $hash
 
-sub Date_InitLists {
-  print "DEBUG: Date_InitLists\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_InitLists {
+  print "DEBUG: _Date_InitLists\n"  if ($Curr{"Debug"} =~ /trace/);
   my($data,$regexp,$opts,$lists,$hash)=@_;
   my(@data)=@$data;
@@ -3934,5 +3838,5 @@
   # Set each of the lists
   if (@lists) {
-    confess "ERROR: Date_InitLists: lists must be 1 per data\n"
+    confess "ERROR: _Date_InitLists: lists must be 1 per data\n"
       if ($#lists != $#data);
     for ($i=0; $i<=$#data; $i++) {
@@ -3972,5 +3876,5 @@
   if ($regexp) {
     @list=keys(%hash);
-    @list=sort sortByLength(@list)  if ($sort);
+    @list=sort _sortByLength(@list)  if ($sort);
     if ($escape) {
       foreach $ele (@list) {
@@ -4000,6 +3904,6 @@
 #   $regexp = '(string1|string2|...)'
 
-sub Date_InitStrings {
-  print "DEBUG: Date_InitStrings\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_InitStrings {
+  print "DEBUG: _Date_InitStrings\n"  if ($Curr{"Debug"} =~ /trace/);
   my($data,$regexp,$opts)=@_;
   my(@list)=@{ $data };
@@ -4014,5 +3918,5 @@
   # Create the regular expression
   my($ele)=();
-  @list=sort sortByLength(@list)  if ($sort);
+  @list=sort _sortByLength(@list)  if ($sort);
   if ($escape) {
     foreach $ele (@list) {
@@ -4062,5 +3966,5 @@
 #   val1     : treat the list as the keys of a hash with values 1 .. N
 
-#    &Date_InitLists([$lang{"month_name"},$lang{"month_abb"}],
+#    _Date_InitLists([$lang{"month_name"},$lang{"month_abb"}],
 #             [\$Month,"lc,sort,back"],
 #             [\@Month,\@Mon],
@@ -4101,6 +4005,6 @@
 #   val0     : treat the list as the keys of a hash with values 0 .. N-1
 #   val1     : treat the list as the keys of a hash with values 1 .. N
-sub Date_Regexp {
-  print "DEBUG: Date_Regexp\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Regexp {
+  print "DEBUG: _Date_Regexp\n"  if ($Curr{"Debug"} =~ /trace/);
   my($list,$options,$array)=@_;
   my(@list,$ret,%hash,$i)=();
@@ -4141,5 +4045,5 @@
     $list = join("&&&",@$list);
   } else {
-    confess "ERROR: Date_Regexp.\n";
+    confess "ERROR: _Date_Regexp.\n";
   }
 
@@ -4167,5 +4071,5 @@
     }
   }
-  @list=sort sortByLength(@list)  if ($sort);
+  @list=sort _sortByLength(@list)  if ($sort);
 
   $ret="($back" . join("|",@list) . ")";
@@ -4187,6 +4091,6 @@
 # the day), but if appropriate, signs will be in front of all elements.
 # Also, as many of the signs will be equivalent as possible.
-sub Delta_Normalize {
-  print "DEBUG: Delta_Normalize\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Delta_Normalize {
+  print "DEBUG: _Delta_Normalize\n"  if ($Curr{"Debug"} =~ /trace/);
   my($delta,$mode)=@_;
   return "" if (! $delta);
@@ -4205,5 +4109,5 @@
   # be a negative delta).
 
-  my($y,$mon,$w,$d,$h,$m,$s)=&Delta_Split($delta);
+  my($y,$mon,$w,$d,$h,$m,$s)=_Delta_Split($delta);
 
   # We need to make sure that the signs of all parts of a delta are the
@@ -4283,6 +4187,6 @@
 # specifies the default sign.  Blank elements are set to 0.  If the
 # third element is non-nil, exactly 7 elements must be included.
-sub Delta_Split {
-  print "DEBUG: Delta_Split\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Delta_Split {
+  print "DEBUG: _Delta_Split\n"  if ($Curr{"Debug"} =~ /trace/);
   my($delta,$sign,$exact)=@_;
   my(@delta)=split(/:/,$delta);
@@ -4301,8 +4205,8 @@
 # Reads up to 3 arguments.  $h may contain the time in any international
 # format.  Any empty elements are set to 0.
-sub Date_ParseTime {
-  print "DEBUG: Date_ParseTime\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_ParseTime {
+  print "DEBUG: _Date_ParseTime\n"  if ($Curr{"Debug"} =~ /trace/);
   my($h,$m,$s)=@_;
-  my($t)=&CheckTime("one");
+  my($t)=_CheckTime("one");
 
   if (defined $h  and  $h =~ /$t/) {
@@ -4320,8 +4224,8 @@
 # Forms a date with the 6 elements passed in (all of which must be defined).
 # No check as to validity is made.
-sub Date_Join {
-  print "DEBUG: Date_Join\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Join {
+  print "DEBUG: _Date_Join\n"  if ($Curr{"Debug"} =~ /trace/);
   foreach (0 .. $#_) {
-      croak "undefined arg $_ to Date_Join()" if not defined $_[$_];
+      croak "undefined arg $_ to _Date_Join()" if not defined $_[$_];
   }
   my($y,$m,$d,$h,$mn,$s)=@_;
@@ -4341,5 +4245,5 @@
 
   } else {
-    confess "ERROR: Invalid internal format in Date_Join.\n";
+    confess "ERROR: Invalid internal format in _Date_Join.\n";
   }
   $m="0$m"    if (length($m)==1);
@@ -4354,6 +4258,6 @@
 # If "one" or "two" is passed in, a regexp with 1/2 or 2 digit hours is
 # returned.
-sub CheckTime {
-  print "DEBUG: CheckTime\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _CheckTime {
+  print "DEBUG: _CheckTime\n"  if ($Curr{"Debug"} =~ /trace/);
   my($time)=@_;
   my($h)='(?:0?[0-9]|1[0-9]|2[0-3])';
@@ -4385,7 +4289,7 @@
 # This checks a recurrence.  If it is valid, it splits it and returns the
 # elements.  Otherwise, it returns an empty list.
-#    ($recur0,$recur1,$flags,$dateb,$date0,$date1)=&Recur_Split($recur);
-sub Recur_Split {
-  print "DEBUG: Recur_Split\n"  if ($Curr{"Debug"} =~ /trace/);
+#    ($recur0,$recur1,$flags,$dateb,$date0,$date1)=_Recur_Split($recur);
+sub _Recur_Split {
+  print "DEBUG: _Recur_Split\n"  if ($Curr{"Debug"} =~ /trace/);
   my($recur)=@_;
   my(@ret,@tmp);
@@ -4414,6 +4318,6 @@
 # still not valid, () is returned.
 #
-sub Date_Split {
-  print "DEBUG: Date_Split\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Split {
+  print "DEBUG: _Date_Split\n"  if ($Curr{"Debug"} =~ /trace/);
   my($date, $definitely_valid)=@_;
   $definitely_valid = 0 if not defined $definitely_valid;
@@ -4439,5 +4343,5 @@
 
   } else {
-    confess "ERROR: Invalid internal format in Date_Split.\n";
+    confess "ERROR: Invalid internal format in _Date_Split.\n";
   }
 
@@ -4455,5 +4359,5 @@
     ($y,$m,$d,$h,$mn,$s)=($1,$2,$3,$4,$5,$6);
     my(@d_in_m)=(0,31,28,31,30,31,30,31,31,30,31,30,31);
-    $d_in_m[2]=29  if (&Date_LeapYear($y));
+    $d_in_m[2]=29  if (Date_LeapYear($y));
     if ($d>$d_in_m[$m]) {
 	my $msg = "invalid date $date: day $d of month $m, but only $d_in_m[$m] days in that month";
@@ -4477,7 +4381,7 @@
 # This returns the date easter occurs on for a given year as ($month,$day).
 # This is from the Calendar FAQ.
-sub Date_Easter {
+sub _Date_Easter {
   my($y)=@_;
-  $y=&Date_FixYear($y)  if (length($y)==2);
+  $y=_Date_FixYear($y)  if (length($y)==2);
 
   my($c) = $y/100;
@@ -4497,5 +4401,5 @@
 # the 1st argument (with the 2nd argument the null list) and the year/month
 # of these will be used.
-sub Date_Recur_WoM {
+sub _Date_Recur_WoM {
   my($y,$m,$w,$d)=@_;
   my(@y)=@$y;
@@ -4507,5 +4411,5 @@
   if (@m) {
     foreach $m (@m) {
-      return ()  if (! &IsInt($m,1,12));
+      return ()  if (! _IsInt($m,1,12));
     }
 
@@ -4523,5 +4427,5 @@
   } else {
     foreach $d0 (@y) {
-      @tmp=&Date_Split($d0);
+      @tmp=_Date_Split($d0);
       return ()  if (! @tmp);
       push(@tmp2,$tmp[0]);
@@ -4533,10 +4437,10 @@
   return ()  if (! @w);
   foreach $w (@w) {
-    return ()  if ($w==0  ||  ! &IsInt($w,-5,5));
+    return ()  if ($w==0  ||  ! _IsInt($w,-5,5));
   }
 
   if (@d) {
     foreach $d (@d) {
-      return ()  if ($d==0  ||  ! &IsInt($d,-7,7));
+      return ()  if ($d==0  ||  ! _IsInt($d,-7,7));
       $d += 8  if ($d < 0);
     }
@@ -4548,16 +4452,16 @@
 
     # Find 1st day of this month and next month
-    $date0=&Date_Join($y,$m,1,0,0,0);
-    $date1=&DateCalc_DateDelta($date0,"+0:1:0:0:0:0:0");
+    $date0=_Date_Join($y,$m,1,0,0,0);
+    $date1=_DateCalc_DateDelta($date0,"+0:1:0:0:0:0:0");
 
     foreach $d (@d) {
       # Find 1st occurence of DOW (in both months)
-      $d0=&Date_GetNext($date0,$d,1);
-      $d1=&Date_GetNext($date1,$d,1);
+      $d0=Date_GetNext($date0,$d,1);
+      $d1=Date_GetNext($date1,$d,1);
 
       @tmp=();
-      while (&Date_Cmp($d0,$d1)<0) {
+      while (Date_Cmp($d0,$d1)<0) {
         push(@tmp,$d0);
-        $d0=&DateCalc_DateDelta($d0,"+0:0:1:0:0:0:0");
+        $d0=_DateCalc_DateDelta($d0,"+0:0:1:0:0:0:0");
       }
 
@@ -4585,20 +4489,20 @@
 # list is the first date>=$date1 (because sometimes the set part will
 # move the date back into the range).
-sub Date_Recur {
+sub _Date_Recur {
   my($date0,$date1,$dateb,$delta)=@_;
   my(@ret,$d)=();
 
-  while (&Date_Cmp($dateb,$date0)<0) {
-    $dateb=&DateCalc_DateDelta($dateb,$delta);
-  }
-  while (&Date_Cmp($dateb,$date1)>=0) {
-    $dateb=&DateCalc_DateDelta($dateb,"-$delta");
+  while (Date_Cmp($dateb,$date0)<0) {
+    $dateb=_DateCalc_DateDelta($dateb,$delta);
+  }
+  while (Date_Cmp($dateb,$date1)>=0) {
+    $dateb=_DateCalc_DateDelta($dateb,"-$delta");
   }
 
   # Add the dates $date0..$dateb
   $d=$dateb;
-  while (&Date_Cmp($d,$date0)>=0) {
+  while (Date_Cmp($d,$date0)>=0) {
     unshift(@ret,$d);
-    $d=&DateCalc_DateDelta($d,"-$delta");
+    $d=_DateCalc_DateDelta($d,"-$delta");
   }
   # Add the first date earler than the range
@@ -4606,8 +4510,8 @@
 
   # Add the dates $dateb..$date1
-  $d=&DateCalc_DateDelta($dateb,$delta);
-  while (&Date_Cmp($d,$date1)<0) {
+  $d=_DateCalc_DateDelta($dateb,$delta);
+  while (Date_Cmp($d,$date1)<0) {
     push(@ret,$d);
-    $d=&DateCalc_DateDelta($d,$delta);
+    $d=_DateCalc_DateDelta($d,$delta);
   }
   # Add the first date later than the range
@@ -4621,5 +4525,5 @@
 # $h,$m,$s can each be values or lists "1-2,4".  If any are equal to "-1",
 # they are not set (and none of the larger elements are set).
-sub Date_RecurSetTime {
+sub _Date_RecurSetTime {
   my($date0,$date1,$dates,$h,$m,$s)=@_;
   my(@dates)=@$dates;
@@ -4630,5 +4534,5 @@
 
   if ($h ne "-1") {
-    @h=&ReturnList($h);
+    @h=_ReturnList($h);
     return ()  if ! (@h);
     @h=sort { $a<=>$b } (@h);
@@ -4637,5 +4541,5 @@
     foreach $date (@dates) {
       foreach $h (@h) {
-        push(@tmp,&Date_SetDateField($date,"h",$h,1));
+        push(@tmp,Date_SetDateField($date,"h",$h,1));
       }
     }
@@ -4644,5 +4548,5 @@
 
   if ($m ne "-1") {
-    @m=&ReturnList($m);
+    @m=_ReturnList($m);
     return ()  if ! (@m);
     @m=sort { $a<=>$b } (@m);
@@ -4651,5 +4555,5 @@
     foreach $date (@dates) {
       foreach $m (@m) {
-        push(@tmp,&Date_SetDateField($date,"mn",$m,1));
+        push(@tmp,Date_SetDateField($date,"mn",$m,1));
       }
     }
@@ -4658,5 +4562,5 @@
 
   if ($s ne "-1") {
-    @s=&ReturnList($s);
+    @s=_ReturnList($s);
     return ()  if ! (@s);
     @s=sort { $a<=>$b } (@s);
@@ -4665,5 +4569,5 @@
     foreach $date (@dates) {
       foreach $s (@s) {
-        push(@tmp,&Date_SetDateField($date,"s",$s,1));
+        push(@tmp,Date_SetDateField($date,"s",$s,1));
       }
     }
@@ -4673,7 +4577,7 @@
   @tmp=();
   foreach $date (@dates) {
-    push(@tmp,$date)  if (&Date_Cmp($date,$date0)>=0  &&
-                          &Date_Cmp($date,$date1)<0  &&
-                          &Date_Split($date));
+    push(@tmp,$date)  if (Date_Cmp($date,$date0)>=0  &&
+                          Date_Cmp($date,$date1)<0  &&
+                          _Date_Split($date));
   }
 
@@ -4681,6 +4585,6 @@
 }
 
-sub DateCalc_DateDate {
-  print "DEBUG: DateCalc_DateDate\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _DateCalc_DateDate {
+  print "DEBUG: _DateCalc_DateDate\n"  if ($Curr{"Debug"} =~ /trace/);
   my($D1,$D2,$mode)=@_;
   my(@d_in_m)=(0,31,28,31,30,31,30,31,31,30,31,30,31);
@@ -4689,6 +4593,6 @@
   # Exact mode
   if ($mode==0) {
-    my($y1,$m1,$d1,$h1,$mn1,$s1)=&Date_Split($D1, 1);
-    my($y2,$m2,$d2,$h2,$mn2,$s2)=&Date_Split($D2, 1);
+    my($y1,$m1,$d1,$h1,$mn1,$s1)=_Date_Split($D1, 1);
+    my($y2,$m2,$d2,$h2,$mn2,$s2)=_Date_Split($D2, 1);
     my($i,@delta,$d,$delta,$y)=();
 
@@ -4702,18 +4606,18 @@
     $d=0;
     if ($y2>$y1) {
-      $d=&Date_DaysInYear($y1) - &Date_DayOfYear($m1,$d1,$y1);
-      $d+=&Date_DayOfYear($m2,$d2,$y2);
+      $d=Date_DaysInYear($y1) - Date_DayOfYear($m1,$d1,$y1);
+      $d+=Date_DayOfYear($m2,$d2,$y2);
       for ($y=$y1+1; $y<$y2; $y++) {
-        $d+= &Date_DaysInYear($y);
+        $d+= Date_DaysInYear($y);
       }
     } elsif ($y2<$y1) {
-      $d=&Date_DaysInYear($y2) - &Date_DayOfYear($m2,$d2,$y2);
-      $d+=&Date_DayOfYear($m1,$d1,$y1);
+      $d=Date_DaysInYear($y2) - Date_DayOfYear($m2,$d2,$y2);
+      $d+=Date_DayOfYear($m1,$d1,$y1);
       for ($y=$y2+1; $y<$y1; $y++) {
-        $d+= &Date_DaysInYear($y);
+        $d+= Date_DaysInYear($y);
       }
       $d *= -1;
     } else {
-      $d=&Date_DayOfYear($m2,$d2,$y2) - &Date_DayOfYear($m1,$d1,$y1);
+      $d=Date_DayOfYear($m2,$d2,$y2) - Date_DayOfYear($m1,$d1,$y1);
     }
     $delta[2]=0;
@@ -4725,5 +4629,5 @@
 
     $delta=join(":",@delta);
-    $delta=&Delta_Normalize($delta,0);
+    $delta=_Delta_Normalize($delta,0);
     return $delta;
   }
@@ -4734,10 +4638,10 @@
   # make sure both are work days
   if ($mode==2 || $mode==3) {
-    $date1=&Date_NextWorkDay($date1,0,1);
-    $date2=&Date_NextWorkDay($date2,0,1);
+    $date1=Date_NextWorkDay($date1,0,1);
+    $date2=Date_NextWorkDay($date2,0,1);
   }
 
   # make sure date1 comes before date2
-  if (&Date_Cmp($date1,$date2)>0) {
+  if (Date_Cmp($date1,$date2)>0) {
     $sign="-";
     $tmp=$date1;
@@ -4747,11 +4651,11 @@
     $sign="+";
   }
-  if (&Date_Cmp($date1,$date2)==0) {
+  if (Date_Cmp($date1,$date2)==0) {
     return "+0:+0:+0:+0:+0:+0:+0"  if ($Cnf{"DeltaSigns"});
     return "+0:0:0:0:0:0:0";
   }
 
-  my($y1,$m1,$d1,$h1,$mn1,$s1)=&Date_Split($date1, 1);
-  my($y2,$m2,$d2,$h2,$mn2,$s2)=&Date_Split($date2, 1);
+  my($y1,$m1,$d1,$h1,$mn1,$s1)=_Date_Split($date1, 1);
+  my($y2,$m2,$d2,$h2,$mn2,$s2)=_Date_Split($date2, 1);
   my($dy,$dm,$dw,$dd,$dh,$dmn,$ds,$ddd)=(0,0,0,0,0,0,0,0);
 
@@ -4762,9 +4666,9 @@
     $dm=0;
     if ($dy>0) {
-      $tmp=&DateCalc_DateDelta($date1,"+$dy:0:0:0:0:0:0",\$err,0);
-      if (&Date_Cmp($tmp,$date2)>0) {
+      $tmp=_DateCalc_DateDelta($date1,"+$dy:0:0:0:0:0:0",\$err,0);
+      if (Date_Cmp($tmp,$date2)>0) {
         $dy--;
         $tmp=$date1;
-        $tmp=&DateCalc_DateDelta($date1,"+$dy:0:0:0:0:0:0",\$err,0)
+        $tmp=_DateCalc_DateDelta($date1,"+$dy:0:0:0:0:0:0",\$err,0)
           if ($dy>0);
         $dm=12;
@@ -4776,9 +4680,9 @@
     $dm+=$m2-$m1;
     if ($dm>0) {
-      $tmp=&DateCalc_DateDelta($date1,"+0:$dm:0:0:0:0:0",\$err,0);
-      if (&Date_Cmp($tmp,$date2)>0) {
+      $tmp=_DateCalc_DateDelta($date1,"+0:$dm:0:0:0:0:0",\$err,0);
+      if (Date_Cmp($tmp,$date2)>0) {
         $dm--;
         $tmp=$date1;
-        $tmp=&DateCalc_DateDelta($date1,"+0:$dm:0:0:0:0:0",\$err,0)
+        $tmp=_DateCalc_DateDelta($date1,"+0:$dm:0:0:0:0:0",\$err,0)
           if ($dm>0);
       }
@@ -4789,6 +4693,6 @@
     # Aug 3 (Monday) -> Sep 3 (Sunday) -> Sep 4 (Monday)  = 1 month
     if ($mode==2) {
-      if (! &Date_IsWorkDay($date1,0)) {
-        $date1=&Date_NextWorkDay($date1,0,1);
+      if (! Date_IsWorkDay($date1,0)) {
+        $date1=Date_NextWorkDay($date1,0,1);
       }
     }
@@ -4799,6 +4703,6 @@
     $dd=0;
     while (1) {
-      $tmp=&Date_NextWorkDay($date1,1,1);
-      if (&Date_Cmp($tmp,$date2)<=0) {
+      $tmp=Date_NextWorkDay($date1,1,1);
+      if (Date_Cmp($tmp,$date2)<=0) {
         $dd++;
         $date1=$tmp;
@@ -4809,5 +4713,5 @@
 
   } else {
-    ($y1,$m1,$d1)=( &Date_Split($date1, 1) )[0..2];
+    ($y1,$m1,$d1)=( _Date_Split($date1, 1) )[0..2];
     $dd=0;
     # If we're jumping across months, set $d1 to the first of the next month
@@ -4815,12 +4719,12 @@
     # of this month)
     if ($m1!=$m2) {
-      $d_in_m[2]=29  if (&Date_LeapYear($y1));
+      $d_in_m[2]=29  if (Date_LeapYear($y1));
       $dd=$d_in_m[$m1]-$d1+1;
       $d1=1;
-      $tmp=&DateCalc_DateDelta($date1,"+0:0:0:$dd:0:0:0",\$err,0);
-      if (&Date_Cmp($tmp,$date2)>0) {
+      $tmp=_DateCalc_DateDelta($date1,"+0:0:0:$dd:0:0:0",\$err,0);
+      if (Date_Cmp($tmp,$date2)>0) {
         $dd--;
         $d1--;
-        $tmp=&DateCalc_DateDelta($date1,"+0:0:0:$dd:0:0:0",\$err,0);
+        $tmp=_DateCalc_DateDelta($date1,"+0:0:0:$dd:0:0:0",\$err,0);
       }
       $date1=$tmp;
@@ -4830,8 +4734,8 @@
     if ($d1<$d2) {
       $ddd=$d2-$d1;
-      $tmp=&DateCalc_DateDelta($date1,"+0:0:0:$ddd:0:0:0",\$err,0);
-      if (&Date_Cmp($tmp,$date2)>0) {
+      $tmp=_DateCalc_DateDelta($date1,"+0:0:0:$ddd:0:0:0",\$err,0);
+      if (Date_Cmp($tmp,$date2)>0) {
         $ddd--;
-        $tmp=&DateCalc_DateDelta($date1,"+0:0:0:$ddd:0:0:0",\$err,0);
+        $tmp=_DateCalc_DateDelta($date1,"+0:0:0:$ddd:0:0:0",\$err,0);
       }
       $date1=$tmp;
@@ -4842,21 +4746,21 @@
   # in business mode, make sure h1 comes before h2 (if not find delta between
   # now and end of day and move to start of next business day)
-  $d1=( &Date_Split($date1, 1) )[2];
+  $d1=( _Date_Split($date1, 1) )[2];
   $dh=$dmn=$ds=0;
   if ($mode==2 || $mode==3  and  $d1 != $d2) {
-    $tmp=&Date_SetTime($date1,$Cnf{"WorkDayEnd"});
-    $tmp=&DateCalc_DateDelta($tmp,"+0:0:0:0:0:1:0")
+    $tmp=Date_SetTime($date1,$Cnf{"WorkDayEnd"});
+    $tmp=_DateCalc_DateDelta($tmp,"+0:0:0:0:0:1:0")
       if ($Cnf{"WorkDay24Hr"});
-    $tmp=&DateCalc_DateDate($date1,$tmp,0);
-    ($tmp,$tmp,$tmp,$tmp,$dh,$dmn,$ds)=&Delta_Split($tmp);
-    $date1=&Date_NextWorkDay($date1,1,0);
-    $date1=&Date_SetTime($date1,$Cnf{"WorkDayBeg"});
-    $d1=( &Date_Split($date1, 1) )[2];
+    $tmp=_DateCalc_DateDate($date1,$tmp,0);
+    ($tmp,$tmp,$tmp,$tmp,$dh,$dmn,$ds)=_Delta_Split($tmp);
+    $date1=Date_NextWorkDay($date1,1,0);
+    $date1=Date_SetTime($date1,$Cnf{"WorkDayBeg"});
+    $d1=( _Date_Split($date1, 1) )[2];
     confess "ERROR: DateCalc DateDate Business.\n"  if ($d1 != $d2);
   }
 
   # Hours, minutes, seconds
-  $tmp=&DateCalc_DateDate($date1,$date2,0);
-  @tmp=&Delta_Split($tmp);
+  $tmp=_DateCalc_DateDate($date1,$date2,0);
+  @tmp=_Delta_Split($tmp);
   $dh  += $tmp[4];
   $dmn += $tmp[5];
@@ -4864,15 +4768,15 @@
 
   $tmp="$sign$dy:$dm:0:$dd:$dh:$dmn:$ds";
-  &Delta_Normalize($tmp,$mode);
-}
-
-sub DateCalc_DeltaDelta {
-  print "DEBUG: DateCalc_DeltaDelta\n"  if ($Curr{"Debug"} =~ /trace/);
+  _Delta_Normalize($tmp,$mode);
+}
+
+sub _DateCalc_DeltaDelta {
+  print "DEBUG: _DateCalc_DeltaDelta\n"  if ($Curr{"Debug"} =~ /trace/);
   my($D1,$D2,$mode)=@_;
   my(@delta1,@delta2,$i,$delta,@delta)=();
   $mode=0  if (! defined $mode);
 
-  @delta1=&Delta_Split($D1);
-  @delta2=&Delta_Split($D2);
+  @delta1=_Delta_Split($D1);
+  @delta2=_Delta_Split($D2);
   for ($i=0; $i<7; $i++) {
     $delta[$i]=$delta1[$i]+$delta2[$i];
@@ -4881,10 +4785,10 @@
 
   $delta=join(":",@delta);
-  $delta=&Delta_Normalize($delta,$mode);
+  $delta=_Delta_Normalize($delta,$mode);
   return $delta;
 }
 
-sub DateCalc_DateDelta {
-  print "DEBUG: DateCalc_DateDelta\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _DateCalc_DateDelta {
+  print "DEBUG: _DateCalc_DateDelta\n"  if ($Curr{"Debug"} =~ /trace/);
   my($D1,$D2,$errref,$mode)=@_;
   my($date)=();
@@ -4907,6 +4811,6 @@
 
   # Date, delta
-  my($y,$m,$d,$h,$mn,$s)=&Date_Split($D1, 1);
-  my($dy,$dm,$dw,$dd,$dh,$dmn,$ds)=&Delta_Split($D2);
+  my($y,$m,$d,$h,$mn,$s)=_Date_Split($D1, 1);
+  my($dy,$dm,$dw,$dd,$dh,$dmn,$ds)=_Delta_Split($D2);
 
   # do the month/year part
@@ -4915,6 +4819,6 @@
     $y = "0$y";
   }
-  &ModuloAddition(-12,$dm,\$m,\$y);   # -12 means 1-12 instead of 0-11
-  $d_in_m[2]=29  if (&Date_LeapYear($y));
+  _ModuloAddition(-12,$dm,\$m,\$y);   # -12 means 1-12 instead of 0-11
+  $d_in_m[2]=29  if (Date_LeapYear($y));
 
   # if we have gone past the last day of a month, move the date back to
@@ -4928,7 +4832,7 @@
     $dd += $dw*7;
   } else {
-    $date=&DateCalc_DateDelta(&Date_Join($y,$m,$d,$h,$mn,$s),
+    $date=_DateCalc_DateDelta(_Date_Join($y,$m,$d,$h,$mn,$s),
                               "+0:0:$dw:0:0:0:0",0);
-    ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1);
+    ($y,$m,$d,$h,$mn,$s)=_Date_Split($date, 1);
   }
 
@@ -4937,13 +4841,13 @@
   if ($mode==2 || $mode==3) {
     $d=$d_in_m[$m] if ($d>$d_in_m[$m]);
-    $date=&Date_NextWorkDay(&Date_Join($y,$m,$d,$h,$mn,$s),0,1);
-    ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1);
+    $date=Date_NextWorkDay(_Date_Join($y,$m,$d,$h,$mn,$s),0,1);
+    ($y,$m,$d,$h,$mn,$s)=_Date_Split($date, 1);
   }
 
   # seconds, minutes, hours
-  &ModuloAddition(60,$ds,\$s,\$mn);
+  _ModuloAddition(60,$ds,\$s,\$mn);
   if ($mode==2 || $mode==3) {
     while (1) {
-      &ModuloAddition(60,$dmn,\$mn,\$h);
+      _ModuloAddition(60,$dmn,\$mn,\$h);
       $h+= $dh;
 
@@ -4973,6 +4877,6 @@
 
   } else {
-    &ModuloAddition(60,$dmn,\$mn,\$h);
-    &ModuloAddition(24,$dh,\$h,\$d);
+    _ModuloAddition(60,$dmn,\$mn,\$h);
+    _ModuloAddition(24,$dh,\$h,\$d);
   }
 
@@ -4987,12 +4891,12 @@
   if ($mode==2 || $mode==3) {
     if ($dd>=0) {
-      $date=&Date_NextWorkDay(&Date_Join($y,$m,$d,$h,$mn,$s),$dd,1);
+      $date=Date_NextWorkDay(_Date_Join($y,$m,$d,$h,$mn,$s),$dd,1);
     } else {
-      $date=&Date_PrevWorkDay(&Date_Join($y,$m,$d,$h,$mn,$s),-$dd,1);
-    }
-    ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1);
+      $date=Date_PrevWorkDay(_Date_Join($y,$m,$d,$h,$mn,$s),-$dd,1);
+    }
+    ($y,$m,$d,$h,$mn,$s)=_Date_Split($date, 1);
 
   } else {
-    $d_in_m[2]=29  if (&Date_LeapYear($y));
+    $d_in_m[2]=29  if (Date_LeapYear($y));
     $d=$d_in_m[$m]  if ($d>$d_in_m[$m]);
     $d += $dd;
@@ -5002,5 +4906,5 @@
         $m=12;
         $y--;
-        if (&Date_LeapYear($y)) {
+        if (Date_LeapYear($y)) {
           $d_in_m[2]=29;
         } else {
@@ -5016,5 +4920,5 @@
         $m=1;
         $y++;
-        if (&Date_LeapYear($y)) {
+        if (Date_LeapYear($y)) {
           $d_in_m[2]=29;
         } else {
@@ -5029,9 +4933,9 @@
     return;
   }
-  &Date_Join($y,$m,$d,$h,$mn,$s);
-}
-
-sub Date_UpdateHolidays {
-  print "DEBUG: Date_UpdateHolidays\n"  if ($Curr{"Debug"} =~ /trace/);
+  _Date_Join($y,$m,$d,$h,$mn,$s);
+}
+
+sub _Date_UpdateHolidays {
+  print "DEBUG: _Date_UpdateHolidays\n"  if ($Curr{"Debug"} =~ /trace/);
   my($year)=@_;
   $Holiday{"year"}=$year;
@@ -5042,8 +4946,8 @@
 
   foreach $key (keys %{ $Holiday{"desc"} }) {
-    @tmp=&Recur_Split($key);
+    @tmp=_Recur_Split($key);
     if (@tmp) {
-      $tmp=&ParseDateString("${year}010100:00:00");
-      ($date)=&ParseRecur($key,$tmp,$tmp,($year+1)."-01-01");
+      $tmp=ParseDateString("${year}010100:00:00");
+      ($date)=ParseRecur($key,$tmp,$tmp,($year+1)."-01-01");
       next  if (! $date);
 
@@ -5051,21 +4955,21 @@
       # Date +/- Delta
       ($date,$delta)=($1,$2);
-      $tmp=&ParseDateString("$date $year");
+      $tmp=ParseDateString("$date $year");
       if ($tmp) {
         $date=$tmp;
       } else {
-        $date=&ParseDateString($date);
+        $date=ParseDateString($date);
         next  if ($date !~ /^$year/);
       }
-      $date=&DateCalc($date,$delta,\$err,0);
+      $date=DateCalc($date,$delta,\$err,0);
 
     } else {
       # Date
       $date=$key;
-      $tmp=&ParseDateString("$date $year");
+      $tmp=ParseDateString("$date $year");
       if ($tmp) {
         $date=$tmp;
       } else {
-        $date=&ParseDateString($date);
+        $date=ParseDateString($date);
         next  if ($date !~ /^$year/);
       }
@@ -5076,6 +4980,6 @@
 
 # This sets a Date::Manip config variable.
-sub Date_SetConfigVariable {
-  print "DEBUG: Date_SetConfigVariable\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_SetConfigVariable {
+  print "DEBUG: _Date_SetConfigVariable\n"  if ($Curr{"Debug"} =~ /trace/);
   my($var,$val)=@_;
 
@@ -5084,5 +4988,5 @@
   $Cnf{"PersonalCnf"}=$val,      return  if ($var =~ /^PersonalCnf$/i);
   $Cnf{"PersonalCnfPath"}=$val,  return  if ($var =~ /^PersonalCnfPath$/i);
-  &EraseHolidays(),              return  if ($var =~ /^EraseHolidays$/i);
+  EraseHolidays(),              return  if ($var =~ /^EraseHolidays$/i);
   $Cnf{"IgnoreGlobalCnf"}=1,     return  if ($var =~ /^IgnoreGlobalCnf$/i);
   $Cnf{"GlobalCnf"}=$val,        return  if ($var =~ /^GlobalCnf$/i);
@@ -5133,15 +5037,15 @@
 #
 # This takes either one date or two dates as arguments.
-sub Events_Calc {
-  print "DEBUG: Events_Calc\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Events_Calc {
+  print "DEBUG: _Events_Calc\n"  if ($Curr{"Debug"} =~ /trace/);
 
   my($date0,$date1)=@_;
 
   my($tmp);
-  $date0=&ParseDateString($date0);
+  $date0=ParseDateString($date0);
   return undef  if (! $date0);
   if ($date1) {
-    $date1=&ParseDateString($date1);
-    if (&Date_Cmp($date0,$date1)>0) {
+    $date1=ParseDateString($date1);
+    if (Date_Cmp($date0,$date1)>0) {
       $tmp=$date1;
       $date1=$date0;
@@ -5149,5 +5053,5 @@
     }
   } else {
-    $date1=&DateCalc_DateDelta($date0,"+0:0:0:0:0:0:1");
+    $date1=_DateCalc_DateDelta($date0,"+0:0:0:0:0:0:1");
   }
 
@@ -5160,15 +5064,15 @@
  DATE: while (@tmp) {
     ($d0,$d1,$del,$name)=splice(@tmp,0,4);
-    $d0=&ParseDateString($d0);
-    $d1=&ParseDateString($d1)   if ($d1);
-    $del=&ParseDateDelta($del)  if ($del);
+    $d0=ParseDateString($d0);
+    $d1=ParseDateString($d1)   if ($d1);
+    $del=ParseDateDelta($del)  if ($del);
     if ($d1) {
       if ($del) {
-        $d1=&DateCalc_DateDelta($d1,$del);
+        $d1=_DateCalc_DateDelta($d1,$del);
       }
     } else {
-      $d1=&DateCalc_DateDelta($d0,$del);
-    }
-    if (&Date_Cmp($d0,$d1)>0) {
+      $d1=_DateCalc_DateDelta($d0,$del);
+    }
+    if (Date_Cmp($d0,$d1)>0) {
       $tmp=$d1;
       $d1=$d0;
@@ -5177,17 +5081,17 @@
     #         [ date0,date1 )
     # [ d0,d1 )      OR     [ d0,d1 )
-    next DATE  if (&Date_Cmp($d1,$date0)<=0  ||
-                   &Date_Cmp($d0,$date1)>=0);
+    next DATE  if (Date_Cmp($d1,$date0)<=0  ||
+                   Date_Cmp($d0,$date1)>=0);
     #      [ date0,date1 )
     # [ d0,d1 )
     # [ d0,                  d1 )
-    if (&Date_Cmp($d0,$date0)<=0) {
+    if (Date_Cmp($d0,$date0)<=0) {
       push @{ $ret{$date0} },$name;
-      push @{ $ret{$d1} },"!$name"  if (&Date_Cmp($d1,$date1)<0);
+      push @{ $ret{$d1} },"!$name"  if (Date_Cmp($d1,$date1)<0);
       next DATE;
     }
     #      [ date0,date1 )
     #                 [ d0,d1 )
-    if (&Date_Cmp($d1,$date1)>=0) {
+    if (Date_Cmp($d1,$date1)>=0) {
       push @{ $ret{$d0} },$name;
       next DATE;
@@ -5212,5 +5116,5 @@
   # Sort them AND take into account the "!$name" entries.
   my(%tmp,$date,@tmp2,@ret);
-  @d=sort { &Date_Cmp($a,$b) } keys %ret;
+  @d=sort { Date_Cmp($a,$b) } keys %ret;
   foreach $date (@d) {
     @tmp=@{ $ret{$date} };
@@ -5237,6 +5141,6 @@
 
 # This parses the raw events list
-sub Events_ParseRaw {
-  print "DEBUG: Events_ParseRaw\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Events_ParseRaw {
+  print "DEBUG: _Events_ParseRaw\n"  if ($Curr{"Debug"} =~ /trace/);
 
   # Only need to be parsed once
@@ -5255,9 +5159,9 @@
     if ($#event == 0) {
 
-      if ($date0=&ParseDateString($event[0])) {
+      if ($date0=ParseDateString($event[0])) {
         #
         # date = event
         #
-        $tmp=&ParseDateString("$event[0] 00:00:00");
+        $tmp=ParseDateString("$event[0] 00:00:00");
         if ($tmp  &&  $tmp eq $date0) {
           $delta="+0:0:0:1:0:0:0";
@@ -5267,9 +5171,9 @@
         push @{ $Events{"dates"} },($date0,0,$delta,$name);
 
-      } elsif ($recur=&ParseRecur($event[0])) {
+      } elsif ($recur=ParseRecur($event[0])) {
         #
         # recur = event
         #
-        ($recur0,$recur1)=&Recur_Split($recur);
+        ($recur0,$recur1)=_Recur_Split($recur);
         if ($recur0) {
           if ($recur1) {
@@ -5297,17 +5201,17 @@
     } elsif ($#event == 1) {
 
-      if ($date0=&ParseDateString($event[0])) {
-
-        if ($date1=&ParseDateString($event[1])) {
+      if ($date0=ParseDateString($event[0])) {
+
+        if ($date1=ParseDateString($event[1])) {
           #
           # date ; date = event
           #
-          $tmp=&ParseDateString("$event[1] 00:00:00");
+          $tmp=ParseDateString("$event[1] 00:00:00");
           if ($tmp  &&  $tmp eq $date1) {
-            $date1=&DateCalc_DateDelta($date1,"+0:0:0:1:0:0:0");
+            $date1=_DateCalc_DateDelta($date1,"+0:0:0:1:0:0:0");
           }
           push @{ $Events{"dates"} },($date0,$date1,0,$name);
 
-        } elsif ($delta=&ParseDateDelta($event[1])) {
+        } elsif ($delta=ParseDateDelta($event[1])) {
           #
           # date ; delta = event
@@ -5321,7 +5225,7 @@
         }
 
-      } elsif ($recur=&ParseRecur($event[0])) {
-
-        if ($delta=&ParseDateDelta($event[1])) {
+      } elsif ($recur=ParseRecur($event[0])) {
+
+        if ($delta=ParseDateDelta($event[1])) {
           #
           # recur ; delta = event
@@ -5352,6 +5256,6 @@
 
 # This reads an init file.
-sub Date_InitFile {
-  print "DEBUG: Date_InitFile\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_InitFile {
+  print "DEBUG: _Date_InitFile\n"  if ($Curr{"Debug"} =~ /trace/);
   my($file)=@_;
   my($in)=new IO::File;
@@ -5369,5 +5273,5 @@
     if (/^\*holiday/i) {
       $section="holiday";
-      &EraseHolidays()  if ($section =~ /holiday/i  &&  $Cnf{"EraseHolidays"});
+      EraseHolidays()  if ($section =~ /holiday/i  &&  $Cnf{"EraseHolidays"});
       next;
     } elsif (/^\*events/i) {
@@ -5380,5 +5284,5 @@
         if (! /(.*\S)\s*=\s*(.*)$/);
       ($var,$val)=($1,$2);
-      &Date_SetConfigVariable($var,$val);
+      _Date_SetConfigVariable($var,$val);
 
     } elsif ($section =~ /holiday/i) {
@@ -5404,11 +5308,11 @@
 }
 
-# $flag=&Date_TimeCheck(\$h,\$mn,\$s,\$ampm);
+# $flag=_Date_TimeCheck(\$h,\$mn,\$s,\$ampm);
 #   Returns 1 if any of the fields are bad.  All fields are optional, and
 #   all possible checks are done on the data.  If a field is not passed in,
 #   it is set to default values.  If data is missing, appropriate defaults
 #   are supplied.
-sub Date_TimeCheck {
-  print "DEBUG: Date_TimeCheck\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_TimeCheck {
+  print "DEBUG: _Date_TimeCheck\n"  if ($Curr{"Debug"} =~ /trace/);
   my($h,$mn,$s,$ampm)=@_;
   my($tmp1,$tmp2,$tmp3)=();
@@ -5439,5 +5343,5 @@
     $$h="00"      if ($$h eq "");
     $$h="0$$h"    if (length($$h)==1);
-    return 1      if (! &IsInt($$h,0,23));
+    return 1      if (! _IsInt($$h,0,23));
     $tmp2="AM"    if ($$h<12);
     $tmp2="PM"    if ($$h>=12);
@@ -5449,15 +5353,15 @@
   $$mn="00"       if ($$mn eq "");
   $$mn="0$$mn"    if (length($$mn)==1);
-  return 1        if (! &IsInt($$mn,0,59));
+  return 1        if (! _IsInt($$mn,0,59));
 
   # Check seconds
   $$s="00"        if ($$s eq "");
   $$s="0$$s"      if (length($$s)==1);
-  return 1        if (! &IsInt($$s,0,59));
+  return 1        if (! _IsInt($$s,0,59));
 
   return 0;
 }
 
-# $flag=&Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk);
+# $flag=_Date_DateCheck(\$y,\$m,\$d,\$h,\$mn,\$s,\$ampm,\$wk);
 #   Returns 1 if any of the fields are bad.  All fields are optional, and
 #   all possible checks are done on the data.  If a field is not passed in,
@@ -5467,6 +5371,6 @@
 #   If the flag UpdateHolidays is set, the year is set to
 #   CurrHolidayYear.
-sub Date_DateCheck {
-  print "DEBUG: Date_DateCheck\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_DateCheck {
+  print "DEBUG: _Date_DateCheck\n"  if ($Curr{"Debug"} =~ /trace/);
   my($y,$m,$d,$h,$mn,$s,$ampm,$wk)=@_;
   my($tmp1,$tmp2,$tmp3)=();
@@ -5485,7 +5389,7 @@
   # Check year.
   $$y=$curr_y             if ($$y eq "");
-  $$y=&Date_FixYear($$y)  if (length($$y)<4);
-  return 1                if (! &IsInt($$y,0,9999));
-  $d_in_m[2]=29           if (&Date_LeapYear($$y));
+  $$y=_Date_FixYear($$y)  if (length($$y)<4);
+  return 1                if (! _IsInt($$y,0,9999));
+  $d_in_m[2]=29           if (Date_LeapYear($$y));
 
   # Check month
@@ -5494,12 +5398,12 @@
     if (exists $Lang{$Cnf{"Language"}}{"MonthH"}{lc($$m)});
   $$m="0$$m"              if (length($$m)==1);
-  return 1                if (! &IsInt($$m,1,12));
+  return 1                if (! _IsInt($$m,1,12));
 
   # Check day
   $$d="01"                if ($$d eq "");
   $$d="0$$d"              if (length($$d)==1);
-  return 1                if (! &IsInt($$d,1,$d_in_m[$$m]));
+  return 1                if (! _IsInt($$d,1,$d_in_m[$$m]));
   if ($$wk) {
-    $tmp1=&Date_DayOfWeek($$m,$$d,$$y);
+    $tmp1=Date_DayOfWeek($$m,$$d,$$y);
     $tmp2=$Lang{$Cnf{"Language"}}{"WeekH"}{lc($$wk)}
       if (exists $Lang{$Cnf{"Language"}}{"WeekH"}{lc($$wk)});
@@ -5507,10 +5411,10 @@
   }
 
-  return &Date_TimeCheck($h,$mn,$s,$ampm);
+  return _Date_TimeCheck($h,$mn,$s,$ampm);
 }
 
 # Takes a year in 2 digit form and returns it in 4 digit form
-sub Date_FixYear {
-  print "DEBUG: Date_FixYear\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_FixYear {
+  print "DEBUG: _Date_FixYear\n"  if ($Curr{"Debug"} =~ /trace/);
   my($y)=@_;
   my($curr_y)=$Curr{"Y"};
@@ -5521,5 +5425,5 @@
 
   if (lc($Cnf{"YYtoYYYY"}) eq "c") {
-    $y1=substring($y,0,2);
+    $y1=substr($y,0,2);
     $y="$y1$y";
 
@@ -5547,8 +5451,8 @@
 }
 
-# &Date_NthWeekOfYear($y,$n);
+# _Date_NthWeekOfYear($y,$n);
 #   Returns a list of (YYYY,MM,DD) for the 1st day of the Nth week of the
 #   year.
-# &Date_NthWeekOfYear($y,$n,$dow,$flag);
+# _Date_NthWeekOfYear($y,$n,$dow,$flag);
 #   Returns a list of (YYYY,MM,DD) for the Nth DoW of the year.  If flag
 #   is nil, the first DoW of the year may actually be in the previous
@@ -5556,6 +5460,6 @@
 #   If flag is non-nil, the 1st DoW of the year refers to the 1st one
 #   actually in the year
-sub Date_NthWeekOfYear {
-  print "DEBUG: Date_NthWeekOfYear\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_NthWeekOfYear {
+  print "DEBUG: _Date_NthWeekOfYear\n"  if ($Curr{"Debug"} =~ /trace/);
   my($y,$n,$dow,$flag)=@_;
   my($m,$d,$err,$tmp,$date,%dow)=();
@@ -5574,24 +5478,24 @@
   }
 
-  $y=&Date_FixYear($y)  if (length($y)<4);
+  $y=_Date_FixYear($y)  if (length($y)<4);
   if ($Cnf{"Jan1Week1"}) {
-    $date=&Date_Join($y,1,1,0,0,0);
+    $date=_Date_Join($y,1,1,0,0,0);
   } else {
-    $date=&Date_Join($y,1,4,0,0,0);
-  }
-  $date=&Date_GetPrev($date,$Cnf{"FirstDay"},1);
-  $date=&Date_GetNext($date,$dow,1)  if ($dow ne "");
+    $date=_Date_Join($y,1,4,0,0,0);
+  }
+  $date=Date_GetPrev($date,$Cnf{"FirstDay"},1);
+  $date=Date_GetNext($date,$dow,1)  if ($dow ne "");
 
   if ($flag) {
-    ($tmp)=&Date_Split($date, 1);
+    ($tmp)=_Date_Split($date, 1);
     $n++  if ($tmp != $y);
   }
 
   if ($n>1) {
-    $date=&DateCalc_DateDelta($date,"+0:0:". ($n-1) . ":0:0:0:0",\$err,0);
+    $date=_DateCalc_DateDelta($date,"+0:0:". ($n-1) . ":0:0:0:0",\$err,0);
   } elsif ($n==0) {
-    $date=&DateCalc_DateDelta($date,"-0:0:1:0:0:0:0",\$err,0);
-  }
-  ($y,$m,$d)=&Date_Split($date, 1);
+    $date=_DateCalc_DateDelta($date,"-0:0:1:0:0:0:0",\$err,0);
+  }
+  ($y,$m,$d)=_Date_Split($date, 1);
   ($y,$m,$d);
 }
@@ -5603,5 +5507,5 @@
 # 8-bit international characters can be gotten by "\xXX".  I don't know
 # how to get 16-bit characters.  I've got to read up on perllocale.
-sub Char_8Bit {
+sub _Char_8Bit {
   my($hash)=@_;
 
@@ -5830,5 +5734,5 @@
 }
 
-# $hashref = &Date_Init_LANGUAGE;
+# $hashref = _Date_Init_LANGUAGE;
 #   This returns a hash containing all of the initialization for a
 #   specific language.  The hash elements are:
@@ -5912,6 +5816,6 @@
 # every language.
 
-sub Date_Init_English {
-  print "DEBUG: Date_Init_English\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_English {
+  print "DEBUG: _Date_Init_English\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
 
@@ -5964,5 +5868,5 @@
   $$d{"business"}=["business"];
 
-  $$d{"offset"}  =["yesterday","-0:0:0:1:0:0:0","tomorrow","+0:0:0:1:0:0:0","overmorrow","+0:0:0:2:0:0:0"];
+  $$d{"offset"}  =["yesterday","-0:0:0:1:0:0:0","tomorrow","+0:0:0:1:0:0:0","overmorrow","+0:0:0:2:0:0:0","ereyesterday","-0:0:0:2:0:0:0"];
   $$d{"times"}   =["noon","12:00:00","midnight","00:00:00"];
 
@@ -5984,9 +5888,9 @@
 }
 
-sub Date_Init_Italian {
-  print "DEBUG: Date_Init_Italian\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Italian {
+  print "DEBUG: _Date_Init_Italian\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
   my(%h)=();
-  &Char_8Bit(\%h);
+  _Char_8Bit(\%h);
   my($i)=$h{"i`"};
 
@@ -6055,9 +5959,9 @@
 }
 
-sub Date_Init_French {
-  print "DEBUG: Date_Init_French\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_French {
+  print "DEBUG: _Date_Init_French\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
   my(%h)=();
-  &Char_8Bit(\%h);
+  _Char_8Bit(\%h);
   my($e)=$h{"e'"};
   my($u)=$h{"u^"};
@@ -6132,9 +6036,9 @@
 }
 
-sub Date_Init_Romanian {
-  print "DEBUG: Date_Init_Romanian\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Romanian {
+  print "DEBUG: _Date_Init_Romanian\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
   my(%h)=();
-  &Char_8Bit(\%h);
+  _Char_8Bit(\%h);
   my($p)=$h{"p"};
   my($i)=$h{"i^"};
@@ -6249,9 +6153,9 @@
 }
 
-sub Date_Init_Swedish {
-  print "DEBUG: Date_Init_Swedish\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Swedish {
+  print "DEBUG: _Date_Init_Swedish\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
   my(%h)=();
-  &Char_8Bit(\%h);
+  _Char_8Bit(\%h);
   my($ao)=$h{"ao"};
   my($o) =$h{"o:"};
@@ -6333,9 +6237,9 @@
 }
 
-sub Date_Init_German {
-  print "DEBUG: Date_Init_German\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_German {
+  print "DEBUG: _Date_Init_German\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
   my(%h)=();
-  &Char_8Bit(\%h);
+  _Char_8Bit(\%h);
   my($a)=$h{"a:"};
   my($u)=$h{"u:"};
@@ -6422,9 +6326,9 @@
 }
 
-sub Date_Init_Dutch {
-  print "DEBUG: Date_Init_Dutch\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Dutch {
+  print "DEBUG: _Date_Init_Dutch\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
   my(%h)=();
-  &Char_8Bit(\%h);
+  _Char_8Bit(\%h);
 
   $$d{"month_name"}=
@@ -6514,6 +6418,6 @@
 }
 
-sub Date_Init_Polish {
-  print "DEBUG: Date_Init_Polish\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Polish {
+  print "DEBUG: _Date_Init_Polish\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
 
@@ -6613,9 +6517,9 @@
 }
 
-sub Date_Init_Spanish {
-  print "DEBUG: Date_Init_Spanish\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Spanish {
+  print "DEBUG: _Date_Init_Spanish\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
   my(%h)=();
-  &Char_8Bit(\%h);
+  _Char_8Bit(\%h);
 
   $$d{"month_name"}=
@@ -6696,9 +6600,9 @@
 }
 
-sub Date_Init_Portuguese {
-  print "DEBUG: Date_Init_Portuguese\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Portuguese {
+  print "DEBUG: _Date_Init_Portuguese\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
   my(%h)=();
-  &Char_8Bit(\%h);
+  _Char_8Bit(\%h);
   my($o) = $h{"-o"};
   my($c) = $h{",c"};
@@ -6792,9 +6696,9 @@
 }
 
-sub Date_Init_Russian {
-  print "DEBUG: Date_Init_Russian\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Russian {
+  print "DEBUG: _Date_Init_Russian\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
   my(%h)=();
-  &Char_8Bit(\%h);
+  _Char_8Bit(\%h);
   my($a) =$h{"a:"};
 
@@ -6980,6 +6884,6 @@
 }
 
-sub Date_Init_Turkish {
-  print "DEBUG: Date_Init_Turkish\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Turkish {
+  print "DEBUG: _Date_Init_Turkish\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
 
@@ -7091,6 +6995,6 @@
 }
 
-sub Date_Init_Danish {
-  print "DEBUG: Date_Init_Danish\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Danish {
+  print "DEBUG: _Date_Init_Danish\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
 
@@ -7170,6 +7074,6 @@
 }
 
-sub Date_Init_Catalan {
-  print "DEBUG: Date_Init_Catalan\n"  if ($Curr{"Debug"} =~ /trace/);
+sub _Date_Init_Catalan {
+  print "DEBUG: _Date_Init_Catalan\n"  if ($Curr{"Debug"} =~ /trace/);
   my($d)=@_;
 
@@ -7266,5 +7170,5 @@
 no integer;
 
-# &ModuloAddition($N,$add,\$val,\$rem);
+# _ModuloAddition($N,$add,\$val,\$rem);
 #   This calculates $val=$val+$add and forces $val to be in a certain range.
 #   This is useful for adding numbers for which only a certain range is
@@ -7275,6 +7179,6 @@
 #   Example:
 #     To add 2 hours together (with the excess returned in days) use:
-#       &ModuloAddition(60,$s1,\$s,\$day);
-sub ModuloAddition {
+#       _ModuloAddition(60,$s1,\$s,\$day);
+sub _ModuloAddition {
   my($N,$add,$val,$rem)=@_;
   return  if ($N==0);
@@ -7303,9 +7207,9 @@
 }
 
-# $Flag=&IsInt($String [,$low, $high]);
+# $Flag=_IsInt($String [,$low, $high]);
 #    Returns 1 if $String is a valid integer, 0 otherwise.  If $low is
 #    entered, $String must be >= $low.  If $high is entered, $String must
 #    be <= $high.  It is valid to check only one of the bounds.
-sub IsInt {
+sub _IsInt {
   my($N,$low,$high)=@_;
   return 0  if (! defined $N  or
@@ -7316,36 +7220,5 @@
 }
 
-# $Pos=&SinLindex(\@List,$Str [,$offset [,$CaseInsensitive]]);
-#    Searches for an exact string in a list.
-#
-#    This is similar to RinLindex except that it searches for elements
-#    which are exactly equal to $Str (possibly case insensitive).
-sub SinLindex {
-  my($listref,$Str,$offset,$Insensitive)=@_;
-  my($i,$len,$tmp)=();
-  $len=$#$listref;
-  return -2  if ($len<0 or ! $Str);
-  return -1  if (&Index_First(\$offset,$len));
-  $Str=uc($Str)  if ($Insensitive);
-  for ($i=$offset; $i<=$len; $i++) {
-    $tmp=$$listref[$i];
-    $tmp=uc($tmp)  if ($Insensitive);
-    return $i  if ($tmp eq $Str);
-  }
-  return -1;
-}
-
-sub Index_First {
-  my($offsetref,$max)=@_;
-  $$offsetref=0  if (! $$offsetref);
-  if ($$offsetref < 0) {
-    $$offsetref += $max + 1;
-    $$offsetref=0  if ($$offsetref < 0);
-  }
-  return -1 if ($$offsetref > $max);
-  return 0;
-}
-
-# $File=&CleanFile($file);
+# $File=_CleanFile($file);
 #   This cleans up a path to remove the following things:
 #     double slash       /a//b  -> /a/b
@@ -7353,5 +7226,5 @@
 #     leading dot        ./a    -> a
 #     trailing slash     a/     -> a
-sub CleanFile {
+sub _CleanFile {
   my($file)=@_;
   $file =~ s/\s*$//;
@@ -7366,5 +7239,5 @@
 }
 
-# $File=&ExpandTilde($file);
+# $File=_ExpandTilde($file);
 #   This checks to see if a "~" appears as the first character in a path.
 #   If it does, the "~" expansion is interpreted (if possible) and the full
@@ -7374,5 +7247,5 @@
 #   This is Windows/Mac friendly.
 #   This is efficient.
-sub ExpandTilde {
+sub _ExpandTilde {
   my($file)=shift;
   my($user,$home)=();
@@ -7401,18 +7274,18 @@
 }
 
-# $File=&FullFilePath($file);
+# $File=_FullFilePath($file);
 #   Returns the full or relative path to $file (expanding "~" if necessary).
 #   Returns an empty string if a "~" expansion cannot be interpreted.  The
-#   path does not need to exist.  CleanFile is called.
-sub FullFilePath {
+#   path does not need to exist.  _CleanFile is called.
+sub _FullFilePath {
   my($file)=shift;
   my($rootpat) = '^/'; #default pattern to match absolute path
   $rootpat = '^(\\|/|([A-Za-z]:[\\/]))' if ($OS eq 'Windows');
-  $file=&ExpandTilde($file);
+  $file=_ExpandTilde($file);
   return ""  if (! $file);
-  return &CleanFile($file);
-}
-
-# $Flag=&CheckFilePath($file [,$mode]);
+  return _CleanFile($file);
+}
+
+# $Flag=_CheckFilePath($file [,$mode]);
 #   Checks to see if $file exists, to see what type it is, and whether
 #   the script can access it.  If it exists and has the correct mode, 1
@@ -7429,8 +7302,8 @@
 #   All characters in $mode which do not correspond to valid tests are
 #   ignored.
-sub CheckFilePath {
+sub _CheckFilePath {
   my($file,$mode)=@_;
   my($test)=();
-  $file=&FullFilePath($file);
+  $file=_FullFilePath($file);
   $mode = ""  if (! defined $mode);
 
@@ -7464,5 +7337,5 @@
 #&&
 
-# $Path=&FixPath($path [,$full] [,$mode] [,$error]);
+# $Path=_FixPath($path [,$full] [,$mode] [,$error]);
 #   Makes sure that every directory in $path (a colon separated list of
 #   directories) appears as a full path or relative path.  All "~"
@@ -7482,5 +7355,5 @@
 #
 #   The corrected path is returned.
-sub FixPath {
+sub _FixPath {
   my($path,$full,$mode,$err)=@_;
   local($_)="";
@@ -7502,7 +7375,7 @@
     # Expand path
     if ($full) {
-      $_=&FullFilePath($_);
+      $_=_FullFilePath($_);
     } else {
-      $_=&ExpandTilde($_);
+      $_=_ExpandTilde($_);
     }
     if (! $_) {
@@ -7512,5 +7385,5 @@
 
     # Check mode
-    if (! $mode  or  &CheckFilePath($_,$mode)) {
+    if (! $mode  or  _CheckFilePath($_,$mode)) {
       $path .= $Cnf{"PathSep"} . $_;
     } else {
@@ -7523,24 +7396,24 @@
 #&&
 
-# $File=&SearchPath($file,$path [,$mode] [,@suffixes]);
+# $File=_SearchPath($file,$path [,$mode] [,@suffixes]);
 #   Searches through directories in $path for a file named $file.  The
 #   full path is returned if one is found, or an empty string otherwise.
 #   The file may exist with one of the @suffixes.  The mode is checked
-#   similar to &CheckFilePath.
+#   similar to _CheckFilePath.
 #
 #   The first full path that matches the name and mode is returned.  If none
 #   is found, an empty string is returned.
-sub SearchPath {
+sub _SearchPath {
   my($file,$path,$mode,@suff)=@_;
   my($f,$s,$d,@dir,$fs)=();
-  $path=&FixPath($path,1,"r");
+  $path=_FixPath($path,1,"r");
   @dir=split(/$Cnf{"PathSep"}/,$path);
   foreach $d (@dir) {
     $f="$d/$file";
     $f=~ s|//|/|g;
-    return $f if (&CheckFilePath($f,$mode));
+    return $f if (_CheckFilePath($f,$mode));
     foreach $s (@suff) {
       $fs="$f.$s";
-      return $fs if (&CheckFilePath($fs,$mode));
+      return $fs if (_CheckFilePath($fs,$mode));
     }
   }
@@ -7548,5 +7421,5 @@
 }
 
-# @list=&ReturnList($str);
+# @list=_ReturnList($str);
 #    This takes a string which should be a comma separated list of integers
 #    or ranges (5-7).  It returns a sorted list of all integers referred to
@@ -7554,5 +7427,5 @@
 #
 #    Negative integers are also handled.  "-2--1" is equivalent to "-2,-1".
-sub ReturnList {
+sub _ReturnList {
   my($str)=@_;
   my(@ret,@str,$from,$to,$tmp)=();
@@ -7577,2 +7450,12 @@
 
 1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
Index: trunk/Cocoa/Pester/Source/Manip/DM5abbrevs.pm
===================================================================
--- trunk/Cocoa/Pester/Source/Manip/DM5abbrevs.pm	(revision 618)
+++ trunk/Cocoa/Pester/Source/Manip/DM5abbrevs.pm	(revision 618)
@@ -0,0 +1,875 @@
+package Date::Manip::DM5abbrevs;
+# Copyright (c) 2003-2010 Sullivan Beck. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+########################################################################
+########################################################################
+
+=pod
+
+=head1 NAME
+
+Date::Manip::DM5abbrevs - A list of all timezone abbreviations
+
+=head1 SYNPOSIS
+
+This module is not intended to be used directly. Date::Manip 5.xx
+will load it as needed.
+
+This module contains all of the time zone abbrevations from
+Date::Manip 6.xx copied backwards to 5.xx to provide slightly
+better support for time zones.
+
+Note that this is only a bandaid fix, and does not add proper
+time zone handling to version 5.xx .
+
+=cut
+
+require 5.008000;
+
+use strict;
+use warnings;
+
+use vars qw($VERSION);
+$VERSION='5.55';
+
+$Date::Manip::Abbrevs = join(' ',qw(
+      idlw   -1200
+      nt     -1100
+      sat    -0400
+      cldt   -0300
+      at     -0200
+      utc    +0000
+      mewt   +0100
+      mez    +0100
+      fwt    +0100
+      gb     +0100
+      swt    +0100
+      mesz   +0200
+      fst    +0200
+      metdst +0200
+      eetdst +0300
+      eetedt +0300
+      bt     +0300
+      it     +0330
+      zp4    +0400
+      zp5    +0500
+      ist    +0530
+      zp6    +0600
+      awst   +0800
+      rok    +0900
+      aest   +1000
+      acdt   +1030
+      cadt   +1030
+      aedt   +1100
+      eadt   +1100
+      nzt    +1200
+      idle   +1200
+
+      a      -0100
+      acst   -0400
+      act    -0500
+      addt   -0200
+      adt    -0300
+      aft    +0430
+      ahdt   -0900
+      ahst   -1000
+      akdt   -0800
+      akst   -0900
+      aktst  +0600
+      aktt   +0500
+      almst  +0700
+      almt   +0600
+      amst   -0300
+      amt    -0400
+      anast  +1300
+      anat   +1200
+      ant    -0430
+      apt    -0300
+      aqtst  +0500
+      aqtt   +0500
+      arst   -0200
+      art    -0300
+      ashst  +0500
+      asht   +0400
+      ast    -0400
+      awt    -0300
+      azomt  +0000
+      azost  +0000
+      azot   -0100
+      azst   +0500
+      azt    +0400
+      b      -0200
+      bakst  +0400
+      bakt   +0400
+      bdst   +0700
+      bdt    +0600
+      beat   +0230
+      bnt    +0800
+      bort   +0800
+      bortst +0820
+      bot    -0400
+      brst   -0200
+      brt    -0300
+      bst    +0100
+      btt    +0600
+      burt   +0630
+      c      -0300
+      cant   -0100
+      capt   -0900
+      cast   +1100
+      cat    +0200
+      cawt   -0900
+      cct    +0630
+      cddt   -0400
+      cdt    -0500
+      cemt   +0300
+      cest   +0200
+      cet    +0100
+      cgst   -0100
+      cgt    -0200
+      chadt  +1345
+      chast  +1245
+      chat   +0830
+      chdt   -0530
+      chost  +1000
+      chot   +0800
+      chst   +1000
+      cit    +0800
+      cjt    +0900
+      ckhst  -0930
+      ckt    -1000
+      clst   -0300
+      clt    -0400
+      cmt    +0155
+      cost   -0400
+      cot    -0500
+      cpt    -0500
+      cst    -0600
+      cut    +0220
+      cvst   -0100
+      cvt    -0100
+      cwst   +0845
+      cwt    -0500
+      cxt    +0700
+      d      -0400
+      dact   +0600
+      davt   +0500
+      ddut   +1000
+      dusst  +0600
+      dust   +0600
+      e      -0500
+      easst  -0500
+      east   -0600
+      eat    +0300
+      ect    -0500
+      eddt   -0300
+      edt    -0400
+      eest   +0300
+      eet    +0200
+      egst   +0000
+      egt    -0100
+      ehdt   -0430
+      eit    +0900
+      ept    -0400
+      est    -0500
+      ewt    -0400
+      f      -0600
+      fjst   +1300
+      fjt    +1200
+      fkst   -0300
+      fkt    -0400
+      fmt    -0053
+      fnst   -0100
+      fnt    -0200
+      fort   +0500
+      frust  +0600
+      frut   +0600
+      g      -0700
+      galt   -0600
+      gamt   -0900
+      gbgt   -0345
+      gest   +0400
+      get    +0400
+      gft    -0300
+      ghst   +0020
+      gilt   +1200
+      gmt    +0000
+      gmt+1  +0100
+      gmt+10 +1000
+      gmt+11 +1100
+      gmt+12 +1200
+      gmt+2  +0200
+      gmt+3  +0300
+      gmt+4  +0400
+      gmt+5  +0500
+      gmt+6  +0600
+      gmt+7  +0700
+      gmt+8  +0800
+      gmt+9  +0900
+      gmt-1  -0100
+      gmt-10 -1000
+      gmt-11 -1100
+      gmt-12 -1200
+      gmt-13 -1300
+      gmt-14 -1400
+      gmt-2  -0200
+      gmt-3  -0300
+      gmt-4  -0400
+      gmt-5  -0500
+      gmt-6  -0600
+      gmt-7  -0700
+      gmt-8  -0800
+      gmt-9  -0900
+      gst    +0400
+      gyt    -0400
+      h      -0800
+      hadt   -0900
+      hast   -1000
+      hdt    -0930
+      hkst   +0900
+      hkt    +0800
+      hovst  +0800
+      hovt   +0700
+      hpt    -0930
+      hst    -1000
+      hwt    -0930
+      i      -0900
+      ict    +0700
+      iddt   +0400
+      idt    +0300
+      ihst   +0600
+      iot    +0600
+      irdt   +0430
+      irkst  +0900
+      irkt   +0800
+      irst   +0330
+      isst   +0000
+      ist    +0200
+      javt   +0720
+      jdt    +1000
+      jst    +0900
+      k      -1000
+      kart   +0500
+      kast   +0500
+      kdt    +1000
+      kgst   +0600
+      kgt    +0600
+      kizst  +0600
+      kizt   +0500
+      kost   +1100
+      krast  +0800
+      krat   +0700
+      kst    +0900
+      kuyst  +0300
+      kuyt   +0300
+      kwat   -1200
+      l      -1100
+      lhst   +1100
+      lint   +1400
+      lkt    +0600
+      lont   +0700
+      m      -1200
+      madmt  +0100
+      madst  +0000
+      madt   -0100
+      magst  +1200
+      magt   +1100
+      malst  +0720
+      malt   +0730
+      mart   -0930
+      mawt   +0500
+      mddt   -0500
+      mdt    -0600
+      mest   +0200
+      met    +0100
+      mht    +1200
+      mmt    +0630
+      most   +0900
+      mot    +0800
+      mpt    +1000
+      msd    +0400
+      msk    +0300
+      mst    -0700
+      must   +0500
+      mut    +0400
+      mvt    +0500
+      mwt    -0600
+      myt    +0800
+      n      +0100
+      ncst   +1200
+      nct    +1100
+      nddt   -0130
+      ndt    -0230
+      negt   -0330
+      nest   +0120
+      net    +0020
+      nft    +1130
+      nmt    +1112
+      novst  +0700
+      novt   +0600
+      npt    +0545
+      nrt    +1200
+      nst    -0330
+      nut    -1100
+      nwt    -1000
+      nzdt   +1300
+      nzmt   +1130
+      nzst   +1200
+      o      +0200
+      omsst  +0700
+      omst   +0600
+      orast  +0500
+      orat   +0500
+      p      +0300
+      pddt   -0600
+      pdt    -0700
+      pest   -0400
+      pet    -0500
+      petst  +1300
+      pett   +1200
+      pgt    +1000
+      phot   +1300
+      phst   +0900
+      pht    +0800
+      pkst   +0600
+      pkt    +0500
+      pmdt   -0200
+      pmst   -0300
+      pmt    +1000
+      pnt    -0830
+      pont   +1100
+      ppmt   -0449
+      ppt    -0700
+      pst    -0800
+      pwt    +0900
+      pyst   -0300
+      pyt    -0400
+      q      +0400
+      qmt    -0514
+      qyzst  +0700
+      qyzt   +0600
+      r      +0500
+      ret    +0400
+      rott   -0300
+      s      +0600
+      sakst  +1100
+      sakt   +1000
+      samst  +0500
+      samt   +0400
+      sast   +0200
+      sbt    +1100
+      sct    +0400
+      sdmt   -0440
+      sgt    +0800
+      shest  +0600
+      shet   +0500
+      slst   +0100
+      smt    +0216
+      srt    -0300
+      sst    -1100
+      stat   +0400
+      svest  +0500
+      svet   +0400
+      swat   +0130
+      syot   +0300
+      t      +0700
+      taht   -1000
+      tasst  +0600
+      tast   +0600
+      tbist  +0400
+      tbit   +0400
+      tft    +0500
+      tjt    +0500
+      tkt    -1000
+      tlt    +0900
+      tmt    +0500
+      tost   +1400
+      tot    +1300
+      trst   +0400
+      trt    +0300
+      trut   +1000
+      tsat   +0300
+      tvt    +1200
+      u      +0800
+      ulast  +0900
+      ulat   +0800
+      urast  +0500
+      urat   +0400
+      urut   +0600
+      ut     +0000
+      uyhst  -0230
+      uyst   -0200
+      uyt    -0300
+      uzst   +0600
+      uzt    +0500
+      v      +0900
+      vet    -0430
+      vlasst +1000
+      vlast  +1100
+      vlat   +1000
+      volst  +0400
+      volt   +0300
+      vost   +0600
+      vust   +1200
+      vut    +1100
+      w      +1000
+      wakt   +1200
+      warst  -0300
+      wart   -0400
+      wast   +0200
+      wat    +0100
+      wemt   +0200
+      west   +0100
+      wet    +0000
+      wft    +1200
+      wgst   -0200
+      wgt    -0300
+      wit    +0700
+      wmt    +0124
+      wsdt   -1000
+      wst    +0800
+      x      +1100
+      y      +1200
+      yakst  +1000
+      yakt   +0900
+      yddt   -0700
+      ydt    -0800
+      yekst  +0600
+      yekt   +0500
+      yerst  +0400
+      yert   +0400
+      ypt    -0800
+      yst    -0900
+      ywt    -0800
+      z      +0000
+));
+
+=pod
+
+=head1 TIMEZONES
+
+The following timezones are defined:
+
+      A      -0100
+      ACDT   +1030
+      ACST   -0400
+      ACT    -0500
+      ADDT   -0200
+      ADT    -0300
+      AEDT   +1100
+      AEST   +1000
+      AFT    +0430
+      AHDT   -0900
+      AHST   -1000
+      AKDT   -0800
+      AKST   -0900
+      AKTST  +0600
+      AKTT   +0500
+      ALMST  +0700
+      ALMT   +0600
+      AMST   -0300
+      AMT    -0400
+      ANAST  +1300
+      ANAT   +1200
+      ANT    -0430
+      APT    -0300
+      AQTST  +0500
+      AQTT   +0500
+      ARST   -0200
+      ART    -0300
+      ASHST  +0500
+      ASHT   +0400
+      AST    -0400
+      AT     -0200
+      AWST   +0800
+      AWT    -0300
+      AZOMT  +0000
+      AZOST  +0000
+      AZOT   -0100
+      AZST   +0500
+      AZT    +0400
+      B      -0200
+      BAKST  +0400
+      BAKT   +0400
+      BDST   +0700
+      BDT    +0600
+      BEAT   +0230
+      BNT    +0800
+      BORT   +0800
+      BORTST +0820
+      BOT    -0400
+      BRST   -0200
+      BRT    -0300
+      BST    +0100
+      BT     +0300
+      BTT    +0600
+      BURT   +0630
+      C      -0300
+      CADT   +1030
+      CANT   -0100
+      CAPT   -0900
+      CAST   +1100
+      CAT    +0200
+      CAWT   -0900
+      CCT    +0630
+      CDDT   -0400
+      CDT    -0500
+      CEMT   +0300
+      CEST   +0200
+      CET    +0100
+      CGST   -0100
+      CGT    -0200
+      CHADT  +1345
+      CHAST  +1245
+      CHAT   +0830
+      CHDT   -0530
+      CHOST  +1000
+      CHOT   +0800
+      CHST   +1000
+      CIT    +0800
+      CJT    +0900
+      CKHST  -0930
+      CKT    -1000
+      CLDT   -0300
+      CLST   -0300
+      CLT    -0400
+      CMT    +0155
+      COST   -0400
+      COT    -0500
+      CPT    -0500
+      CST    -0600
+      CUT    +0220
+      CVST   -0100
+      CVT    -0100
+      CWST   +0845
+      CWT    -0500
+      CXT    +0700
+      D      -0400
+      DACT   +0600
+      DAVT   +0500
+      DDUT   +1000
+      DUSST  +0600
+      DUST   +0600
+      E      -0500
+      EADT   +1100
+      EASST  -0500
+      EAST   -0600
+      EAT    +0300
+      ECT    -0500
+      EDDT   -0300
+      EDT    -0400
+      EEST   +0300
+      EET    +0200
+      EETDST +0300
+      EETEDT +0300
+      EGST   +0000
+      EGT    -0100
+      EHDT   -0430
+      EIT    +0900
+      EPT    -0400
+      EST    -0500
+      EWT    -0400
+      F      -0600
+      FJST   +1300
+      FJT    +1200
+      FKST   -0300
+      FKT    -0400
+      FMT    -0053
+      FNST   -0100
+      FNT    -0200
+      FORT   +0500
+      FRUST  +0600
+      FRUT   +0600
+      FST    +0200
+      FWT    +0100
+      G      -0700
+      GALT   -0600
+      GAMT   -0900
+      GB     +0100
+      GBGT   -0345
+      GEST   +0400
+      GET    +0400
+      GFT    -0300
+      GHST   +0020
+      GILT   +1200
+      GMT    +0000
+      GMT+1  +0100
+      GMT+10 +1000
+      GMT+11 +1100
+      GMT+12 +1200
+      GMT+2  +0200
+      GMT+3  +0300
+      GMT+4  +0400
+      GMT+5  +0500
+      GMT+6  +0600
+      GMT+7  +0700
+      GMT+8  +0800
+      GMT+9  +0900
+      GMT-1  -0100
+      GMT-10 -1000
+      GMT-11 -1100
+      GMT-12 -1200
+      GMT-13 -1300
+      GMT-14 -1400
+      GMT-2  -0200
+      GMT-3  -0300
+      GMT-4  -0400
+      GMT-5  -0500
+      GMT-6  -0600
+      GMT-7  -0700
+      GMT-8  -0800
+      GMT-9  -0900
+      GST    +0400
+      GYT    -0400
+      H      -0800
+      HADT   -0900
+      HAST   -1000
+      HDT    -0930
+      HKST   +0900
+      HKT    +0800
+      HOVST  +0800
+      HOVT   +0700
+      HPT    -0930
+      HST    -1000
+      HWT    -0930
+      I      -0900
+      ICT    +0700
+      IDDT   +0400
+      IDLE   +1200
+      IDLW   -1200
+      IDT    +0300
+      IHST   +0600
+      IOT    +0600
+      IRDT   +0430
+      IRKST  +0900
+      IRKT   +0800
+      IRST   +0330
+      ISST   +0000
+      IST    +0200
+      IT     +0330
+      JAVT   +0720
+      JDT    +1000
+      JST    +0900
+      K      -1000
+      KART   +0500
+      KAST   +0500
+      KDT    +1000
+      KGST   +0600
+      KGT    +0600
+      KIZST  +0600
+      KIZT   +0500
+      KOST   +1100
+      KRAST  +0800
+      KRAT   +0700
+      KST    +0900
+      KUYST  +0300
+      KUYT   +0300
+      KWAT   -1200
+      L      -1100
+      LHST   +1100
+      LINT   +1400
+      LKT    +0600
+      LONT   +0700
+      M      -1200
+      MADMT  +0100
+      MADST  +0000
+      MADT   -0100
+      MAGST  +1200
+      MAGT   +1100
+      MALST  +0720
+      MALT   +0730
+      MART   -0930
+      MAWT   +0500
+      MDDT   -0500
+      MDT    -0600
+      MEST   +0200
+      MESZ   +0200
+      MET    +0100
+      METDST +0200
+      MEWT   +0100
+      MEZ    +0100
+      MHT    +1200
+      MMT    +0630
+      MOST   +0900
+      MOT    +0800
+      MPT    +1000
+      MSD    +0400
+      MSK    +0300
+      MST    -0700
+      MUST   +0500
+      MUT    +0400
+      MVT    +0500
+      MWT    -0600
+      MYT    +0800
+      N      +0100
+      NCST   +1200
+      NCT    +1100
+      NDDT   -0130
+      NDT    -0230
+      NEGT   -0330
+      NEST   +0120
+      NET    +0020
+      NFT    +1130
+      NMT    +1112
+      NOVST  +0700
+      NOVT   +0600
+      NPT    +0545
+      NRT    +1200
+      NST    -0330
+      NT     -1100
+      NUT    -1100
+      NWT    -1000
+      NZDT   +1300
+      NZMT   +1130
+      NZST   +1200
+      NZT    +1200
+      O      +0200
+      OMSST  +0700
+      OMST   +0600
+      ORAST  +0500
+      ORAT   +0500
+      P      +0300
+      PDDT   -0600
+      PDT    -0700
+      PEST   -0400
+      PET    -0500
+      PETST  +1300
+      PETT   +1200
+      PGT    +1000
+      PHOT   +1300
+      PHST   +0900
+      PHT    +0800
+      PKST   +0600
+      PKT    +0500
+      PMDT   -0200
+      PMST   -0300
+      PMT    +1000
+      PNT    -0830
+      PONT   +1100
+      PPMT   -0449
+      PPT    -0700
+      PST    -0800
+      PWT    +0900
+      PYST   -0300
+      PYT    -0400
+      Q      +0400
+      QMT    -0514
+      QYZST  +0700
+      QYZT   +0600
+      R      +0500
+      RET    +0400
+      ROK    +0900
+      ROTT   -0300
+      S      +0600
+      SAKST  +1100
+      SAKT   +1000
+      SAMST  +0500
+      SAMT   +0400
+      SAST   +0200
+      SAT    -0400
+      SBT    +1100
+      SCT    +0400
+      SDMT   -0440
+      SGT    +0800
+      SHEST  +0600
+      SHET   +0500
+      SLST   +0100
+      SMT    +0216
+      SRT    -0300
+      SST    -1100
+      STAT   +0400
+      SVEST  +0500
+      SVET   +0400
+      SWAT   +0130
+      SWT    +0100
+      SYOT   +0300
+      T      +0700
+      TAHT   -1000
+      TASST  +0600
+      TAST   +0600
+      TBIST  +0400
+      TBIT   +0400
+      TFT    +0500
+      TJT    +0500
+      TKT    -1000
+      TLT    +0900
+      TMT    +0500
+      TOST   +1400
+      TOT    +1300
+      TRST   +0400
+      TRT    +0300
+      TRUT   +1000
+      TSAT   +0300
+      TVT    +1200
+      U      +0800
+      ULAST  +0900
+      ULAT   +0800
+      URAST  +0500
+      URAT   +0400
+      URUT   +0600
+      UT     +0000
+      UTC    +0000
+      UYHST  -0230
+      UYST   -0200
+      UYT    -0300
+      UZST   +0600
+      UZT    +0500
+      V      +0900
+      VET    -0430
+      VLASST +1000
+      VLAST  +1100
+      VLAT   +1000
+      VOLST  +0400
+      VOLT   +0300
+      VOST   +0600
+      VUST   +1200
+      VUT    +1100
+      W      +1000
+      WAKT   +1200
+      WARST  -0300
+      WART   -0400
+      WAST   +0200
+      WAT    +0100
+      WEMT   +0200
+      WEST   +0100
+      WET    +0000
+      WFT    +1200
+      WGST   -0200
+      WGT    -0300
+      WIT    +0700
+      WMT    +0124
+      WSDT   -1000
+      WST    +0800
+      X      +1100
+      Y      +1200
+      YAKST  +1000
+      YAKT   +0900
+      YDDT   -0700
+      YDT    -0800
+      YEKST  +0600
+      YEKT   +0500
+      YERST  +0400
+      YERT   +0400
+      YPT    -0800
+      YST    -0900
+      YWT    -0800
+      Z      +0000
+      ZP4    +0400
+      ZP5    +0500
+      ZP6    +0600
+
+
+=head1 LICENSE
+
+This script is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 AUTHOR
+
+Sullivan Beck (sbeck@cpan.org)
+
+=cut
+
+1;
Index: trunk/Cocoa/Pester/Source/Pester.xcodeproj/project.pbxproj
===================================================================
--- trunk/Cocoa/Pester/Source/Pester.xcodeproj/project.pbxproj	(revision 617)
+++ trunk/Cocoa/Pester/Source/Pester.xcodeproj/project.pbxproj	(revision 618)
@@ -9,4 +9,6 @@
 /* Begin PBXBuildFile section */
 		E12CBFD310CC310800159E88 /* NJRMenuSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = E12CBFD210CC310800159E88 /* NJRMenuSlider.m */; };
+		E14AFF2F11357B6100DC7922 /* Manip in Resources */ = {isa = PBXBuildFile; fileRef = E14AFF2C11357B6100DC7922 /* Manip */; };
+		E14AFF3011357B6500DC7922 /* Manip in Copy Perl Modules */ = {isa = PBXBuildFile; fileRef = E14AFF2C11357B6100DC7922 /* Manip */; };
 		E15044670CFCDC7E00DE47E9 /* NJRValidatingField.m in Sources */ = {isa = PBXBuildFile; fileRef = E15044660CFCDC7E00DE47E9 /* NJRValidatingField.m */; };
 		E17562620CF8C50B00FC5057 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E17562610CF8C50B00FC5057 /* Sparkle.framework */; };
@@ -158,4 +160,5 @@
 			files = (
 				E17CA9AB0CF7F8CB00018B34 /* Manip.pm in Copy Perl Modules */,
+				E14AFF3011357B6500DC7922 /* Manip in Copy Perl Modules */,
 			);
 			name = "Copy Perl Modules";
@@ -194,4 +197,5 @@
 		E145383E043A1DB200050002 /* NJRHotKeyManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NJRHotKeyManager.h; sourceTree = "<group>"; };
 		E145383F043A1DB200050002 /* NJRHotKeyManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NJRHotKeyManager.m; sourceTree = "<group>"; };
+		E14AFF2C11357B6100DC7922 /* Manip */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Manip; sourceTree = "<group>"; };
 		E14DB31203B8038300000028 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
 		E14DEC820438969400050002 /* NJRHotKeyFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NJRHotKeyFieldCell.h; sourceTree = "<group>"; };
@@ -528,4 +532,5 @@
 			children = (
 				E17CA9A90CF7F8C200018B34 /* Manip.pm */,
+				E14AFF2C11357B6100DC7922 /* Manip */,
 				E19CC53D0CFDE48C0079DCFC /* ParseDate.h */,
 				E19CC53E0CFDE48C0079DCFC /* ParseDate.m */,
@@ -848,4 +853,5 @@
 				E1B11F3D0CF5F30F004975AA /* Volume 1.png in Resources */,
 				E1B11F3E0CF5F30F004975AA /* Volume.nib in Resources */,
+				E14AFF2F11357B6100DC7922 /* Manip in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
