redo char counter logic (bug 1036422)

Much work for little reward.