diff --git a/avrdude/ChangeLog b/avrdude/ChangeLog
index 907be896..1b8650dd 100644
--- a/avrdude/ChangeLog
+++ b/avrdude/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-08  Michal Ludvig <mludvig@logix.net.nz>
+
+	* ser_posix.c(ser_set_dtr_rts): Fixed DTR on/off to make
+	  Arduino auto-reset work. (bug #29108, patch #7100)
+
 2010-03-05  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
 
 	* buspirate.c: Replace printf() by fprintf(stderr)
diff --git a/avrdude/ser_posix.c b/avrdude/ser_posix.c
index a37e5290..5344115b 100644
--- a/avrdude/ser_posix.c
+++ b/avrdude/ser_posix.c
@@ -230,13 +230,13 @@ static int ser_set_dtr_rts(union filedescriptor *fdp, int is_on)
   }
 
   if (is_on) {
-    /* Clear DTR and RTS */
-    ctl &= ~(TIOCM_DTR | TIOCM_RTS);
-  }
-  else {
     /* Set DTR and RTS */
     ctl |= (TIOCM_DTR | TIOCM_RTS);
   }
+  else {
+    /* Clear DTR and RTS */
+    ctl &= ~(TIOCM_DTR | TIOCM_RTS);
+  }
 
   r = ioctl(fdp->ifd, TIOCMSET, &ctl);
   if (r < 0) {