A função correta a utilizar é Math.trunc().
Math.round() irá arredondar para o inteiro mais próximo; não é esta a intenção.
function transforma_magicamente(s){
function duas_casas(numero){
if (numero <= 9){
numero = "0"+numero;
}
return numero;
}
hora = duas_casas(Math.trunc(s/3600));
minuto = duas_casas(Math.trunc((s%3600)/60));
segundo = duas_casas((s%3600)%60);
formatado = hora+":"+minuto+":"+segundo;
return formatado;
}