Sim, isto parece normal.
Não se está movendo para o último registro, ele está povoando todos os registros ao dura, em um recordset dinâmico (você pode potencial editar todo o registro e deve refletir a edição da ocorrência dinâmicamente!). Não é simples, mas é inútil.
Se Demand_Check_C é uma tabela do acesso, você pode abri-la na modalidade da tabela e você pode ler o último registro imediatamente (mas uma tabela não tem um cont record). Se não é, você pode usar-se dbForwardOnly para apressar acima coisas, mas, como o nome implica, você não pode mover.
Basicamente, sua função pôde muito jorrar funcionamento para umas dúzia horas, ele não é desobstruída o que faz, mas se você está no processo de normalizar uma estrutura da tabela, algumas operações podem tomar essa sorte do tempo. Mas você não precisa a contagem record.
Usar um tabela-tipo ou somente um recordset para diante, usar os 60 pedaços dos registros (ainda que rendem na ordem de 100 ' 000 perguntas non-trivial da inserção para analisar, aperfeiçoar, e funcionamento), e copiar a seção interna fora do laço para começ os registros less-than-60 da extremidade.
Não usar a contagem record total ou as posições absolutas.
(°v°)