Opa, ainda esta mostrando no layout, mesmo com zeros no juros e mandando 3 como isento.
acho que o or ali no primeiro if esta fazendo sempre mostrar valor juros
if ((ValorMoraJuros > 0) and (LTipoMoraJuros in [1,2])) or (CaracTitulo <> tcDescontada) then
begin
if (LTipoMoraJuros = 2) then
if ValorMoraJuros > 99.99 then
raise Exception.Create('Percentual ValorMoraJuros não pode ser maior que 99,99% !');
Juros := IntToStr(LTipoMoraJuros) + FormatDateTime('ddmmyyyy', DataMoraJuros) + PadLeft(StringReplace(FormatFloat('#####0.00', ValorMoraJuros), ',', '', []), 15, '0')
end