int CS_PIN = 10;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const byte MY_ADDRESS = 42;
float REFRESH_RATE = 0.0;
By convention, all capital letter names are reserved for constants. So, these are all good.
int LOOP_COUNTER = 0;
Now, a counter can hardly be considered constant, can it?
I'd try stripping stuff out of that program, to see whether the problem is with the card, or a library you are using, or some other issue. For instance, the LCD has nothing to do with reading from/writing to the SD card. So, out it goes.
Similarly, the I2C and Wire classes have nothing to do with reading from/writing to the SD card. So, out they go.
That leaves you with a much smaller program to test JUST the write to the card.
What SD shield are you using? Some of them do not support such large cards.