So actually it was working the whole time.
Here's a slightly larger snippet of code:
var winWidth = $(window).width();
newWinWidth = $(window).width();
var pos = $('#slider').position();
var page = Math.floor(Math.abs(pos.left)/winWidth);
var offset = winWidth - newWinWidth;
var leftPos = pos.left + (offset * page) + 'px';
[B]winWidth = newWinWidth;[/B]
The highlighted line is what I just added, and now it works fine.
winWidth is set on document ready, and is used to find the difference between the original window size, and the new window size. Because I wasn't updating that variable leftPos was always the same number. So the div did move, just very slightly at the start, and then remained still.
I love it when a plan comes together...