alla fine ho fatto con il complementare, ma quello che non capisco e che ho omesso è che anche il VB.NET usa un long differente dal c#

sia VB6 che .NET tornano con lo stesso negativo, mentre c# no.