Watcher:
I am using a array data[20][4] to hold the contents of data displayed on a 4 lines x 20 chars LCD.
Can you explain why you are storing the contents of a 4x20 display in a 20x4 array? Normally the array would be 4x21, to allow for the terminating null so you can use strings (null terminated char arrays), or an array of 4 char* .