Presumo il problema stia nel fatto che le operazioni aritmetiche siano fatte con il valore ascii e non con l'effettivo valore.