diff --git a/Modules/ucnhash.c b/Modules/ucnhash.c
index 248300e..bdcdab1 100644
--- a/Modules/ucnhash.c
+++ b/Modules/ucnhash.c
@@ -38,7 +38,7 @@
 
     /* get offset into phrasebook */
     offset = phrasebook_offset1[(code>>phrasebook_shift)];
-    offset = phrasebook_offset2[(offset<<phrasebook_shift)+
+    offset = phrasebook_offset2[(offset<<phrasebook_shift) +
                                (code&((1<<phrasebook_shift)-1))];
     if (!offset)
         return 0;
@@ -47,13 +47,12 @@
 
     for (;;) {
         /* get word index */
-        if (phrasebook[offset] & 128) {
-            word = phrasebook[offset] & 127;
-            offset++;
-        } else {
-            word = (phrasebook[offset]<<8) + phrasebook[offset+1];
-            offset+=2;
-        }
+        word = phrasebook[offset] - phrasebook_short;
+        if (word >= 0) {
+            word = (word << 8) + phrasebook[offset+1];
+            offset += 2;
+        } else
+            word = phrasebook[offset++];
         if (i) {
             if (i > buflen)
                 return 0; /* buffer overflow */
