Я думаю, что идея состоит в том, чтобы вернуть 1 или -1, чтобы представить положительный или отрицательный. Я не думаю, что вы хотели бы, чтобы он вернул 0. Может иметь катастрофические последствия. Представьте себе, что вы пытаетесь изменить знак значения, умножив его на знак (x), когда он возвращает 0. Вместо изменения знака вы измените значение на 0.
Я бы придерживался
function sign(x)
return (x<0 and -1) or 1
end