uint32 underflow cause logic errors, use float in golang