fix off-by-1 bug