mb_substr takes 32bit *signed* ints even on 64bit PHP, GRR.