function DateQuarterEnd(const D: TDateTime): TDateTime; var Year, Month, Day, Quarter: Word; begin SysUtils.DecodeDate(D, Year, Month, Day); Quarter := 4 - ((12 - Month) div 3); // get 1st day of following quarter Month := 0; SysUtils.IncAMonth(Year, Month, Day, Quarter * 3 + 1); // required date is day before 1st day of following quarter Result := SysUtils.EncodeDate(Year, Month, 1) - 1.0; end; //delphi/2163