diff --git a/avrdude/avrdude.conf.in b/avrdude/avrdude.conf.in
index b640cc8b..dadc28de 100644
--- a/avrdude/avrdude.conf.in
+++ b/avrdude/avrdude.conf.in
@@ -1790,12 +1790,12 @@ part
         max_write_delay = 9000;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
-	read_lo           = "  1   0   1   0      0   0   0   0",
+        read            = "  1   0   1   0      0   0   0   0",
                           "  x   x   x   x    a11 a10  a9  a8",
                           " a7  a6  a5  a4     a3  a2  a1  a0",
                           "  o   o   o   o      o   o   o   o";
 
-	write_lo           = "  1   1   0   0      0   0   0   0",
+        write           = "  1   1   0   0      0   0   0   0",
                           "  x   x   x   x    a11 a10  a9  a8",
                           " a7  a6  a5  a4     a3  a2  a1  a0", 
                           "  i   i   i   i      i   i   i   i";
@@ -1943,12 +1943,12 @@ part
         max_write_delay = 9000;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
-	read_lo            = "  1   0   1   0      0   0   0   0",
+        read            = "  1   0   1   0      0   0   0   0",
                           "  x   x   x   x    a11 a10  a9  a8",
                           " a7  a6  a5  a4     a3  a2  a1  a0",
                           "  o   o   o   o      o   o   o   o";
 
-	write_lo           = "  1   1   0   0      0   0   0   0",
+        write           = "  1   1   0   0      0   0   0   0",
                           "  x   x   x   x    a11 a10  a9  a8",
                           " a7  a6  a5  a4     a3  a2  a1  a0", 
                           "  i   i   i   i      i   i   i   i";
diff --git a/avrdude/stk500v2.c b/avrdude/stk500v2.c
index b7d1cd2c..c8aa49a9 100644
--- a/avrdude/stk500v2.c
+++ b/avrdude/stk500v2.c
@@ -501,6 +501,7 @@ static int stk500v2_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
   unsigned char buf[266];
   unsigned char cmds[4];
   int result;
+  OPCODE * rop, * wop;
 
   DEBUG("STK500V2: stk500v2_paged_write(..,%s,%d,%d)\n",m->desc,page_size,n_bytes);
 
@@ -515,9 +516,18 @@ static int stk500v2_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
   }
   commandbuf[4] = m->delay;
 
+  if (a_div == 1) {
+    wop = m->op[AVR_OP_WRITE];
+    rop = m->op[AVR_OP_READ];
+  }
+  else {
+    wop = m->op[AVR_OP_WRITE_LO];
+    rop = m->op[AVR_OP_READ_LO];
+  }
+
   // if the memory is paged, load the appropriate commands into the buffer
   if (m->mode & 0x01) {
-    commandbuf[3] = m->mode | 0x80;		// yes, write the stupid page to flash
+    commandbuf[3] = m->mode | 0x80;		// yes, write the page to flash
 
     if (m->op[AVR_OP_LOADPAGE_LO] == NULL) {
       fprintf(stderr, "%s: stk500v2_paged_write: loadpage instruction not defined for part \"%s\"\n",
@@ -536,26 +546,27 @@ static int stk500v2_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
     commandbuf[6] = cmds[0];
 
   // otherwise, we need to load different commands in
-  } else {
-    commandbuf[3] = m->mode | 0x80;		// yes, write the stupid words to flash
+  } 
+  else {
+    commandbuf[3] = m->mode | 0x80;		// yes, write the words to flash
 
-    if (m->op[AVR_OP_WRITE_LO] == NULL) {
+    if (wop == NULL) {
       fprintf(stderr, "%s: stk500v2_paged_write: write instruction not defined for part \"%s\"\n",
               progname, p->desc);
       return -1;
     }
-    avr_set_bits(m->op[AVR_OP_WRITE_LO], cmds);
+    avr_set_bits(wop, cmds);
     commandbuf[5] = cmds[0];
     commandbuf[6] = 0;
   }
 
   // the read command is common to both methods
-  if (m->op[AVR_OP_READ_LO] == NULL) {
+  if (rop == NULL) {
     fprintf(stderr, "%s: stk500v2_paged_write: read instruction not defined for part \"%s\"\n",
             progname, p->desc);
     return -1;
   }
-  avr_set_bits(m->op[AVR_OP_READ_LO], cmds);
+  avr_set_bits(rop, cmds);
   commandbuf[7] = cmds[0];
 
   commandbuf[8] = m->readback[0];
@@ -625,25 +636,30 @@ static int stk500v2_paged_load(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
   unsigned char buf[275];	// max buffer size for stk500v2 at this point
   unsigned char cmds[4];
   int result;
+  OPCODE * rop;
 
   DEBUG("STK500V2: stk500v2_paged_load(..,%s,%d,%d)\n",m->desc,page_size,n_bytes);
 
   page_size = m->readsize;
 
+  rop = m->op[AVR_OP_READ];
+
   // determine which command is to be used
   if (strcmp(m->desc, "flash") == 0) {
     commandbuf[0] = CMD_READ_FLASH_ISP;
-  } else if (strcmp(m->desc, "eeprom") == 0) {
+    rop = m->op[AVR_OP_READ_LO];
+  } 
+  else if (strcmp(m->desc, "eeprom") == 0) {
     commandbuf[0] = CMD_READ_EEPROM_ISP;
   }
 
   // the read command is common to both methods
-  if (m->op[AVR_OP_READ_LO] == NULL) {
+  if (rop == NULL) {
     fprintf(stderr, "%s: stk500v2_paged_load: read instruction not defined for part \"%s\"\n",
             progname, p->desc);
     return -1;
   }
-  avr_set_bits(m->op[AVR_OP_READ_LO], cmds);
+  avr_set_bits(rop, cmds);
   commandbuf[3] = cmds[0];
 
   stk500v2_loadaddr(pgm, 0);