squeezed another couple nanoseconds off decoding

If scanner returns a non-negative state, then it sits on the start of a string