Почему (-1) это true?
Потому что оно не ноль :)
Ну... это долгая история, но во многих языках, логика построена так, что числа отличные от нуля - есть положительные (true), при приведении их к булевому типу. В этом есть иногда смысл, но на пальцах объяснить это (вырвав из контекста) - относительно сложно.
Если хотите изменить логику, можно сделать какую-то сокращенную проверку, типа такой:var b = (a > 0);
Тогда, b будет false, если a будет меньше или равно нулю.