Arduino won't go to sleep!

I think you are getting cumulative errors there. I would take the initial start time (say, zero), and then, after your calculations, sleep until start+1000 is up. Next time around, until start+2000. And so on. Don't try to recalculate the start time. The wake time should always be 1000 from the last wake time.