diff --git a/Include/py_curses.h b/Include/py_curses.h
index b5f7e54..1b6d2d3 100644
--- a/Include/py_curses.h
+++ b/Include/py_curses.h
@@ -12,6 +12,17 @@
 #endif
 #endif
 
+#ifdef HAVE_NCURSES_H
+/* configure was checking <curses.h>, but we will
+   use <ncurses.h>, which has all these features. */
+#ifndef WINDOW_HAS_FLAGS
+#define WINDOW_HAS_FLAGS 1
+#endif
+#ifndef MVWDELCH_IS_EXPRESSION
+#define MVWDELCH_IS_EXPRESSION 1
+#endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 092f658..bd544ba 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -107,6 +107,11 @@
 #define STRICT_SYSV_CURSES      /* Don't use ncurses extensions */
 #endif
 
+#ifdef __hpux
+#define _XOPEN_SOURCE_EXTENDED
+#define STRICT_SYSV_CURSES
+#endif
+
 #define CURSES_MODULE
 #include "py_curses.h"
 
@@ -119,7 +124,7 @@
 #include <term.h>
 #endif
 
-#if defined(sgi) || defined(__sun)
+#if !defined(HAVE_NCURSES_H) && (defined(sgi) || defined(__sun))
 #define STRICT_SYSV_CURSES       /* Don't use ncurses extensions */
 typedef chtype attr_t;           /* No attr_t type is available */
 #endif
@@ -605,6 +610,19 @@
   return Py_None;
 }
 
+#if defined(HAVE_NCURSES_H) || defined(MVWDELCH_IS_EXPRESSION)
+#define py_mvwdelch mvwdelch
+#else
+int py_mvwdelch(WINDOW *w, int y, int x)
+{
+  mvwdelch(w,y,x);
+  /* On HP/UX, mvwdelch already returns. On other systems,
+     we may well run into this return statement. */
+  return 0;
+}
+#endif
+
+
 static PyObject *
 PyCursesWindow_DelCh(PyCursesWindowObject *self, PyObject *args)
 {
@@ -618,7 +636,7 @@
   case 2:
     if (!PyArg_Parse(args,"(ii);y,x", &y, &x))
       return NULL;
-    rtn = mvwdelch(self->win,y,x);
+    rtn = py_mvwdelch(self->win,y,x);
     break;
   default:
     PyErr_SetString(PyExc_TypeError, "delch requires 0 or 2 arguments");
@@ -688,7 +706,7 @@
     return NULL;
   }
   
-#if !defined(__NetBSD__)
+#ifdef WINDOW_HAS_FLAGS
   if (self->win->_flags & _ISPAD)
     return PyCursesCheckERR(pechochar(self->win, ch | attr), 
 			    "echochar");
@@ -1094,7 +1112,7 @@
   int pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol;
   int rtn;
 
-#if defined(__NetBSD__)
+#ifndef WINDOW_HAS_FLAGS
   if (0) {
 #else
   if (self->win->_flags & _ISPAD) {
@@ -1236,7 +1254,7 @@
   int pminrow,pmincol,sminrow,smincol,smaxrow,smaxcol;
   int rtn;
   
-#if defined(__NetBSD__)
+#ifndef WINDOW_HAS_FLAGS
   if (0) {
 #else
   if (self->win->_flags & _ISPAD) {
@@ -1304,7 +1322,7 @@
   }
 
   /* printf("Subwin: %i %i %i %i   \n", nlines, ncols, begin_y, begin_x); */
-#if !defined(__NetBSD__)
+#ifdef WINDOW_HAS_FLAGS
   if (self->win->_flags & _ISPAD)
     win = subpad(self->win, nlines, ncols, begin_y, begin_x);
   else
@@ -1832,6 +1850,11 @@
 	SetDictInt("ACS_HLINE",         (ACS_HLINE));
 	SetDictInt("ACS_VLINE",         (ACS_VLINE));
 	SetDictInt("ACS_PLUS",          (ACS_PLUS));
+#if !defined(__hpux) || defined(HAVE_NCURSES_H)
+        /* On HP/UX 11, these are of type cchar_t, which is not an
+           integral type. If this is a problem on more platforms, a
+           configure test should be added to determine whether ACS_S1
+           is of integral type. */
 	SetDictInt("ACS_S1",            (ACS_S1));
 	SetDictInt("ACS_S9",            (ACS_S9));
 	SetDictInt("ACS_DIAMOND",       (ACS_DIAMOND));
@@ -1846,6 +1869,7 @@
 	SetDictInt("ACS_BOARD",         (ACS_BOARD));
 	SetDictInt("ACS_LANTERN",       (ACS_LANTERN));
 	SetDictInt("ACS_BLOCK",         (ACS_BLOCK));
+#endif
 	SetDictInt("ACS_BSSB",          (ACS_ULCORNER));
 	SetDictInt("ACS_SSBB",          (ACS_LLCORNER));
 	SetDictInt("ACS_BBSS",          (ACS_URCORNER));
@@ -2286,6 +2310,15 @@
 		return NULL;
 	}
 	
+#ifdef __hpux
+        /* tparm is declared with 10 arguments on HP/UX 11.
+           If this is a problem on other platforms as well,
+           an autoconf test should be added to determine
+           whether tparm can be called with a variable number
+           of arguments. Perhaps the other arguments should
+           be initialized in this case also. */
+        result = tparm(fmt,i1,i2,i3,i4,i5,i6,i7,i8,i9);
+#else
 	switch (PyTuple_GET_SIZE(args)) {
 	case 1:
 		result = tparm(fmt);
@@ -2318,7 +2351,7 @@
 		result = tparm(fmt,i1,i2,i3,i4,i5,i6,i7,i8,i9);
 		break;
 	}
-
+#endif /* __hpux */
 	return PyString_FromString(result);
 }
 
diff --git a/acconfig.h b/acconfig.h
index 9e30ab5..94826ad 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -232,6 +232,12 @@
 /* Define if you want to compile in rudimentary thread support */
 #undef WITH_THREAD
 
+/* Define if mvwdelch in curses.h is an expression. */
+#undef MVWDELCH_IS_EXPRESSION
+
+/* Define if WINDOW in curses.h offers a field _flags. */
+#undef WINDOW_HAS_FLAGS
+
 
 /* Leave that blank line there-- autoheader needs it! */
 
diff --git a/configure.in b/configure.in
index d9fdadf..dd724ae 100644
--- a/configure.in
+++ b/configure.in
@@ -1963,6 +1963,38 @@
   AC_DEFINE(HAVE_BROKEN_NICE)
 fi
 
+# On HP/UX 11.0, mvwdelch is a block with a return statement
+AC_MSG_CHECKING(whether mvwdelch is an expression)
+AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
+AC_TRY_COMPILE([#include <curses.h>], [
+  int rtn;
+  rtn = mvwdelch(0,0,0);
+], ac_cv_mvwdelch_is_expression=yes,
+   ac_cv_mvwdelch_is_expression=no,
+   ac_cv_mvwdelch_is_expression=yes))
+AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
+
+if test "$ac_cv_mvwdelch_is_expression" = yes
+then
+  AC_DEFINE(MVWDELCH_IS_EXPRESSION)
+fi
+
+AC_MSG_CHECKING(whether WINDOW has _flags)
+AC_CACHE_VAL(ac_cv_window_has_flags,
+AC_TRY_COMPILE([#include <curses.h>], [
+  WINDOW *w;
+  w->_flags = 0;
+], ac_cv_window_has_flags=yes,
+   ac_cv_window_has_flags=no,
+   ac_cv_window_has_flags=no))
+AC_MSG_RESULT($ac_cv_window_has_flags)
+
+
+if test "$ac_cv_window_has_flags" = yes
+then
+  AC_DEFINE(WINDOW_HAS_FLAGS)
+fi
+
 # THIS MUST BE LAST, IT CAN BREAK OTHER TESTS!
 # Add sys/socket.h to confdefs.h
 cat >> confdefs.h <<\EOF
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 7de66af..40cb00d 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -288,6 +288,12 @@
 /* Define if you want to compile in rudimentary thread support */
 #undef WITH_THREAD
 
+/* Define if mvwdelch in curses.h is an expression. */
+#undef MVWDELCH_IS_EXPRESSION
+
+/* Define if WINDOW in curses.h offers a field _flags. */
+#undef WINDOW_HAS_FLAGS
+
 /* The number of bytes in a char.  */
 #undef SIZEOF_CHAR
 
