Só uma pequena correção para melhor funcionamento, na parte dos minutos troquei o round por floor pois no meu script ele mudava o minuto aos 30 segundos:
function transforma_magicamente(s){
function duas_casas(numero){
if (numero <= 9){
numero = "0"+numero;
}
return numero;
}
hora = duas_casas(Math.round(s/3600));
minuto = duas_casas(Math.floor((s%3600)/60));
segundo = duas_casas((s%3600)%60);
formatado = hora+":"+minuto+":"+segundo;
return formatado;
}