avrdude_pickit2>diff -uN pickit2.c pickit2.c 
--- pickit2.c	2010-05-04 21:51:01.202750000 +1000
+++ pickit2.c	2012-03-14 06:31:37.000000000 -0400
@@ -650,8 +650,8 @@
        if (mem->paged)
        {
-            blockSize = MIN(page_size - (addr_base % page_size), SPI_MAX_CHUNK/4);     // bytes remaining in page
+            blockSize = MIN(page_size - (addr_base % page_size), MIN(n_bytes - addr_base, SPI_MAX_CHUNK/4 ) );     // bytes remaining in page
        }
        else
        {
            blockSize = 1;
        }

