Нашёл ошибку связанную с тем что функция BSet не проводит битовые манипуляции с отрицательными числами. Не знаю фича это или баг. Теперь понятно почему функия не работает и как сделать так что бы она работала.