anchor.diff:        end;
   
         { Collect first rule of the next year. }
  -      if (YearOf(LStart) <= AYear + 1) and (YearOf(LEnd) >= AYear + 1) and (LYPlus1.FPeriod = nil) then
  +      if (NullYearOf(LStart) <= AYear + 1) and (YearOf(LEnd) >= AYear + 1) and (LYPlus1.FPeriod = nil) then
         begin
           { Load the rules for following year. }
           LRules := GetPeriodRulesForYear(LPeriod, AYear + 1);
  
positive.code: 
  function DayOfTheWeek(const APreciseTime: TPreciseTime): Word; inline;
  begin
    Result := {$IFDEF DELPHI}System.{$ENDIF}DateUtils.DayOfTheWeek(PreciseTimeToDateTime(APreciseTime));
  end;
  
  function DayOf(const APreciseTime: TPreciseTime): Word; inline;
  begin
    Result := {$IFDEF DELPHI}System.{$ENDIF}DateUtils.DayOf(PreciseTimeToDateTime(APreciseTime));
  end;
  
  function MonthOf(const APreciseTime: TPreciseTime): Word; inline;
  begin
    Result := {$IFDEF DELPHI}System.{$ENDIF}DateUtils.MonthOf(PreciseTimeToDateTime(APreciseTime));
  end;
  
  function YearOf(const APreciseTime: TPreciseTime): Word; inline;
  begin
    Result := {$IFDEF DELPHI}System.{$ENDIF}DateUtils.YearOf(PreciseTimeToDateTime(APreciseTime));
  end;
  
  function ComparePreciseTime(const A, B: TPreciseTime): Integer; inline;
  
negative.code:   LYMinus1, LYPlus1, LR, LSk: TObservedRule;
  begin
    { Mark all intermediary data as un-initialized. <-- this is date ZERO which is the start point. }
    LStart := 0;
  
    LYMinus1.FPeriod := nil;
    LYPlus1.FPeriod := nil;
  