b/f

read & co return negative values on error, so we need to use an unsigned var to
store the result