Chris, ecfisa sus códigos se pueden mejorar.
Dentro del case simplemente establezco los días a restar, y directamente hago la operación afuera. Después de todo es una expresión común a todos los casos y puede estar fuera del case. Es como sacar factor común en una expresión matemática
Código Delphi
[-]case DayOfTheWeek(ADate) of
DayMonday: Dec := -3;
DaySunday: Dec := -2;
..
end; result := IncDay(Date, Dec);
A mi parecer es un código más legible.
Saludos,