diff --git a/avr.c b/avr.c
index 6f75ca6c..008780f2 100644
--- a/avr.c
+++ b/avr.c
@@ -187,7 +187,7 @@ int avr_read(PROGRAMMER * pgm, AVRPART * p, char * memtype, int size,
 	if (strcasecmp(mem->desc, "flash") == 0)
 	  return avr_mem_hiaddr(mem);
 	else
-	  return 0;
+	  return rc;
       }
     }
   }
@@ -579,8 +579,8 @@ int avr_write(PROGRAMMER * pgm, AVRPART * p, char * memtype, int size,
        * efficiently than we can read it directly, so use its routine
        * instead
        */
-      if (pgm->paged_write(pgm, p, m, m->page_size, size) >= 0)
-	return 0;
+      if ((i = pgm->paged_write(pgm, p, m, m->page_size, size)) >= 0)
+	return i;
     }
   }