Acredito que o Math.round acabou não arredondando. Na verdade ele arredondou primeiro o (anoAtual - anoInicial) e depois dividiu por 28. Para resolver isso, é só usar mais um parênteses, assim ele arredonda o resultado depois da divisão:
<meta charset="UTF-8">
<script>
function pulaLinha() {
document.write("<br>");
}
function mostra(resultado) {
document.write(resultado);
}
var anoInicial = 1500;
var anoAtual = 2022;
mostra("Se passaram " + Math.round((anoAtual - anoInicial) / 28) + " gerações");
pulaLinha();
</script>
Tive um problema com esse código também, mas foi bem mais bobo. Esqueci de colocar um dos sinais de "+" dentro do mostra, depois de muito tempo percebi que estava faltando. Vivendo e aprendendo ;D