use ptrdiff_t, not guesswork