diff --git a/avrdude/ChangeLog b/avrdude/ChangeLog
index f5bc20cb..61f10a5a 100644
--- a/avrdude/ChangeLog
+++ b/avrdude/ChangeLog
@@ -1,3 +1,8 @@
+2003-03-13  Theodore A. Roth  <troth@openavr.org>
+
+	* ser_posix.c, ser_win32.c, serial.h:
+	Change baud from int to long to avoid a 16-bit int overflow.
+
 2003-03-12  Theodore A. Roth  <troth@openavr.org>
 
 	* Makefile.am (avrdude_SOURCES): Add avr910.[ch], serial.h and
diff --git a/avrdude/ser_posix.c b/avrdude/ser_posix.c
index b2a2ca9e..fea1c9b8 100644
--- a/avrdude/ser_posix.c
+++ b/avrdude/ser_posix.c
@@ -36,7 +36,7 @@
 extern char *progname;
 
 struct baud_mapping {
-  int baud;
+  long baud;
   speed_t speed;
 };
 
@@ -55,7 +55,7 @@ static struct baud_mapping baud_lookup_table [] = {
   { 0,      0 }                 /* Terminator. */
 };
 
-static speed_t serial_baud_lookup(int baud)
+static speed_t serial_baud_lookup(long baud)
 {
   struct baud_mapping *map = baud_lookup_table;
 
@@ -65,12 +65,12 @@ static speed_t serial_baud_lookup(int baud)
     map++;
   }
 
-  fprintf(stderr, "%s: serial_baud_lookup(): unknown baud rate: %d", 
+  fprintf(stderr, "%s: serial_baud_lookup(): unknown baud rate: %ld", 
           progname, baud);
   exit(1);
 }
 
-static int serial_setattr(int fd, int baud)
+static int serial_setattr(int fd, long baud)
 {
   int rc;
   struct termios termios;
diff --git a/avrdude/ser_win32.c b/avrdude/ser_win32.c
index 8ddf17fe..3b0555f2 100644
--- a/avrdude/ser_win32.c
+++ b/avrdude/ser_win32.c
@@ -20,14 +20,16 @@
 /* $Id$ */
 
 /*
- * Posix serial interface for avrdude.
+ * Native Win32 serial interface for avrdude.
  */
 
+#include "serial.h"
+
 extern char *progname;
 
 #if 0
 
-int serial_open(char * port, int baud)
+int serial_open(char * port, long baud)
 {
   return fd;
 }
diff --git a/avrdude/serial.h b/avrdude/serial.h
index b8aaf3ff..c84c45df 100644
--- a/avrdude/serial.h
+++ b/avrdude/serial.h
@@ -32,7 +32,7 @@
 
 #include "config.h"
 
-extern int serial_open(char * port, int baud);
+extern int serial_open(char * port, long baud);
 extern void serial_close(int fd);
 
 extern int serial_send(int fd, char * buf, size_t buflen);