diff --git a/src/avrcache.c b/src/avrcache.c
index c7bfae3a..29f1d437 100644
--- a/src/avrcache.c
+++ b/src/avrcache.c
@@ -318,6 +318,9 @@ static int guessBootStart(const PROGRAMMER *pgm, const AVRPART *p) {
   int bootstart = 0;
   const AVR_Cache *cp = pgm->cp_flash;
 
+  if(p->prog_modes & PM_UPDI)   // Modern AVRs put the bootloader at 0
+    return 0;
+
   if(p->n_boot_sections > 0 && p->boot_section_size > 0)
     bootstart = cp->size - (p->boot_section_size<<(p->n_boot_sections-1));