la función RecodeDate (creo que de la unidad DateUtils) puede servirte.
El hecho es que esas dos fechas concretas siempre existen y no han variado en 2000 años

(chiste fácil ya... ). Solo tendrás que recodificar el año de una fecha determinada, e inyectar el dia y mes como unas constantes.
Código Delphi
[-]
function LastDayOfYear(const Value:TDateTime):TDateTime
begin
Result := RecodeDateTime(Value, Yearof(Value), 12,31, 0, 0, 0 ,0);
end;
Saludos