Every time through loop, you check to see if Serial.available() >0 and if it is not, you reset CurrentCharacterLocation back to zero. When a char arrives, it increments but probably cycles through the loop again before the next character can arrive. Serial communication is very slow compared to the speed of the processor. At 9600 baud, it takes about 1 msec to retrieve a character. At 16MHz, the processor can execute 1.6M instructions in that same amount of time.
You should not be resetting things just because there is no serial input available.