As I said, I can't comment because I don't understand your code. I have just come to understand why I don't. You are using a serial LCD and my character LCDs are plain vanilla parallel or I2C. I might add that your code is the best reason I have ever seen for not getting a serial LCD, but that doesn't alter the fact that there is nothing fundamentally wrong with it, and the last line of your previous is probably correct - something stupid and that will only happen once.
You might find that there are libraries around for serial LCDs that will go a long way to reducing your grief.
I suggest you re-post this, or alter the title in order to clearly indicate this is a serial LCD problem. It is not a problem exclusive to serial LCD but that might attract somebody more qualified than me.