diff --git a/ChangeLog b/ChangeLog
index 7a46f00d..e3ae6807 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-03  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+	Reported by Jason Kotzin:
+	* usbasp.c (usbasp_spi_paged_load, usbasp_spi_paged_write):
+	Fix buffer address calculation.
+
 2012-01-03  Rene Liebscher <R.Liebscher@gmx.de>
 
 	patch #7629 add support for atmega48p
diff --git a/usbasp.c b/usbasp.c
index 30c33f88..e5d87c7b 100644
--- a/usbasp.c
+++ b/usbasp.c
@@ -612,7 +612,7 @@ static int usbasp_spi_paged_load(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
   unsigned char cmd[4];
   int wbytes = n_bytes;
   int blocksize;
-  unsigned char * buffer = m->buf;
+  unsigned char *buffer = m->buf + address;
   int function;
 
   if (strcmp(m->desc, "flash") == 0) {
@@ -676,7 +676,7 @@ static int usbasp_spi_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
   unsigned char cmd[4];
   int wbytes = n_bytes;
   int blocksize;
-  unsigned char * buffer = m->buf;
+  unsigned char *buffer = m->buf + address;
   unsigned char blockflags = USBASP_BLOCKFLAG_FIRST;
   int function;