diff --git a/code/modules/wiremod/components/math/binary_conversion.dm b/code/modules/wiremod/components/math/binary_conversion.dm index 8d90019b28c..8ef4067b955 100644 --- a/code/modules/wiremod/components/math/binary_conversion.dm +++ b/code/modules/wiremod/components/math/binary_conversion.dm @@ -37,6 +37,15 @@ if(!length(bit_array)) return - for(var/iteration in 1 to length(bit_array)) + var/to_convert = number.value + var/is_negative + if(number.value < 0) + is_negative = TRUE + to_convert = -to_convert + var/len = length(bit_array) + for(var/iteration in 1 to len) var/datum/port/output/bit = bit_array[iteration] - bit.set_output(number.value & (2 ** (iteration - 1))) + if(iteration == 1 && is_negative) + bit.set_output(1) + continue + bit.set_output(!!(to_convert & (1<< (len - iteration))))