           {
             modMethod(PressTimer)[i]--;
           }
-          else
+          else if (modMethod(PressTimer)[i] == 0)
           {
+            modMethod(PressTimer)[i] = -1; // signal that the key has fired
             PressKey(modMethod(GetKeyVal)(i, modMethod(PressCount)[i] - 1), modMethod(GetKeyType)(i, modMethod(PressCount)[i] - 1));
-            if (modMethod(KeyIsDown)[i])
-            {
-              // do nothing
-            }
-            else
+            if (!modMethod(KeyIsDown)[i])
             {
               modMethod(KeyUp)(i, 19);
             }

  }
}

void modMethod(KeyUp)(char val, byte type)
{
  // ran when a key is pressed up

const byte modMethod(MAX_KEYS) = 3;
const byte modMethod(PADDING) = 2;

int16_t modMethod(PressTimer)[modMethod(MAX_INDEX)];
byte modMethod(PressCount)[modMethod(MAX_INDEX)];
boolean modMethod(KeyIsDown)[modMethod(MAX_INDEX)];

