diff --git a/ChangeLog b/ChangeLog
index 5d9b02e9..819dfb95 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-08-31 Joerg Wunsch <j@uriah.heep.sax.de>
+
+	Tentative fix for bug #16156: Problem with Si-Prog
+	* serbb_posix.c: Disable reset before closing.
+	* serbb_win32.c: (Ditto.)
+
 2006-08-30 Joerg Wunsch <j@uriah.heep.sax.de>
 
 	Rewrite the serbb code so the pin numbering matches the
diff --git a/serbb_posix.c b/serbb_posix.c
index 3c025d10..87eb2141 100644
--- a/serbb_posix.c
+++ b/serbb_posix.c
@@ -241,7 +241,12 @@ static int serbb_open(PROGRAMMER *pgm, char *port)
 
 static void serbb_close(PROGRAMMER *pgm)
 {
-  tcsetattr(pgm->fd, TCSANOW, &oldmode);
+  if (pgm->fd != -1)
+  {   
+	  tcsetattr(pgm->fd, TCSANOW, &oldmode);
+	  pgm->setpin(pgm, pgm->pinno[PIN_AVR_RESET], 1);
+	  close(pgm->fd);
+  }
   return;
 }
 
diff --git a/serbb_win32.c b/serbb_win32.c
index c2bf11c5..6bedb63a 100644
--- a/serbb_win32.c
+++ b/serbb_win32.c
@@ -334,7 +334,10 @@ static void serbb_close(PROGRAMMER *pgm)
 {
 	HANDLE hComPort=(HANDLE)pgm->fd;
 	if (hComPort != INVALID_HANDLE_VALUE)
+	{
+		pgm->setpin(pgm, pgm->pinno[PIN_AVR_RESET], 1);
 		CloseHandle (hComPort);
+	}
         if (verbose > 2)
                 fprintf(stderr,
                         "%s: ser_close(): closed comm port handle 0x%x\n",