dovrei fare qualche verifica .... ma cosi' a occhio se il numero e' UNSIGNED moltiplicarlo per -1 significa mettere ad 1 il bit piu' significativo che e' appunto quello usato per stabilire se il numero e' positivo oppure negativo (nel SIGNED), mentre nell'UNSIGNED viene utilizzato come valore.

e quindi ti appare il max num possibile a 8 byte che e' poi quello del BIGINT UNSIGNED... tieni presente che i valori INT numerici sono memorizzati nel db come una bit map

salvo errori od omissioni.

@edit... va da se che moltiplicare un numero unsigned dove il valore max e' la bit map tutta ad 1 per uno SIGNED dove il bit piu' significativo puo' essere 1/0 a seconda se il valore e' negativo o positivo non e' molto congruente..... occhio che parliamo di bit map e non di valori numerici ascii.