Ao gerar o arquivo de remessa a sequencia acabou pulando por conta do multiplicador (fpQtdRegsLote) que mudou de 3 para 4 quando entrou título com percentual de multa maior que zero.
Isso acabou retornando valor errado para a variável que armazena a sequencia
ISequencia := (ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo) * fpQtdRegsLote) + 1;
No meu teste, já havia adicionado 7 títulos onde o percentual da multa era igual a zero. Até esse momento a variável fpQtdRegsLote é igual a 3, e a sequencia estava em 21.
No próximo título que deveria ser a sequencia 22, por ter o percentual de multa maior que zero, a variável fpQtdRegsLote mudou para 4, e o resultado da multiplicação retornou como 28, quebrando a sequencia dos registros, pois a conta não leva em consideração quantas linhas foram adicionadas em cada título anterior.
Observei isso na classe ACBrBancoBradesco também, que aparentemente pode quebrar a sequencia caso tenha títulos com percentual de multa zerados e outros com valor informado, mas não cheguei a testar.
Fiz uma alteração no fonte do ACBrBancoSantander para testar, me baseando na classe ACBrBancoItau, e aparentemente ficou correto.
1. Removi a declaração da variável ISequencia do método GerarRegistroTransacao240, e passei a declaração para o protected.
2. Instanciei a variável como 0 no constructor.
3. Substituí a linha onde fazia o cálculo da sequencia pelo comando: Inc(ISequencia);
4. E zerei a variável no método GerarRegistroTrailler240.
Se alguém souber de outra maneira de deixar a sequencia correta sem precisar alterar o fonte, e puder me orientar, seria de grande ajuda.
Ou se realmente houver esse problema, fica minha sugestão para alteração do fonte oficial.
Desde já agradeço a atenção.