diff --git a/Lib/bsddb/test/test_all.py b/Lib/bsddb/test/test_all.py
index 23c768c..ad8b1e9 100644
--- a/Lib/bsddb/test/test_all.py
+++ b/Lib/bsddb/test/test_all.py
@@ -70,6 +70,7 @@
         'test_recno',
         'test_thread',
         'test_sequence',
+        'test_cursor_pget_bug',
         ]
 
     alltests = unittest.TestSuite()
diff --git a/Lib/bsddb/test/test_cursor_pget_bug.py b/Lib/bsddb/test/test_cursor_pget_bug.py
new file mode 100644
index 0000000..8ac5f6c
--- /dev/null
+++ b/Lib/bsddb/test/test_cursor_pget_bug.py
@@ -0,0 +1,65 @@
+import unittest
+import sys, os, glob
+
+try:
+    # For Pythons w/distutils pybsddb
+    from bsddb3 import db
+except ImportError:
+    # For Python 2.3
+    from bsddb import db
+
+
+#----------------------------------------------------------------------
+
+class pget_bugTestCase(unittest.TestCase):
+    """Verify that cursor.pget works properly"""
+    db_name = 'test-cursor_pget.db'
+
+    def setUp(self):
+        self.homeDir = os.path.join(os.path.dirname(sys.argv[0]), 'db_home')
+        try:
+            os.mkdir(self.homeDir)
+        except os.error:
+            pass
+        self.env = db.DBEnv()
+        self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
+        self.primary_db = db.DB(self.env)
+        self.primary_db.open(self.db_name, 'primary', db.DB_BTREE, db.DB_CREATE)
+        self.secondary_db = db.DB(self.env)
+        self.secondary_db.set_flags(db.DB_DUP)
+        self.secondary_db.open(self.db_name, 'secondary', db.DB_BTREE, db.DB_CREATE)
+        self.primary_db.associate(self.secondary_db, lambda key, data: data)
+        self.primary_db.put('salad', 'eggs')
+        self.primary_db.put('spam', 'ham')
+        self.primary_db.put('omelet', 'eggs')
+
+
+    def tearDown(self):
+        self.secondary_db.close()
+        self.primary_db.close()
+        self.env.close()
+        del self.secondary_db
+        del self.primary_db
+        del self.env
+        for file in glob.glob(os.path.join(self.homeDir, '*')):
+            os.remove(file)
+        os.removedirs(self.homeDir)
+
+    def test_pget(self):
+        cursor = self.secondary_db.cursor()
+
+        self.assertEquals(('eggs', 'salad', 'eggs'), cursor.pget(key='eggs', flags=db.DB_SET))
+        self.assertEquals(('eggs', 'omelet', 'eggs'), cursor.pget(db.DB_NEXT_DUP))
+        self.assertEquals(None, cursor.pget(db.DB_NEXT_DUP))
+
+        self.assertEquals(('ham', 'spam', 'ham'), cursor.pget('ham', 'spam', flags=db.DB_SET))
+        self.assertEquals(None, cursor.pget(db.DB_NEXT_DUP))
+
+        cursor.close()
+
+
+def test_suite():
+    return unittest.makeSuite(pget_bugTestCase)
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')
diff --git a/Lib/test/test_bsddb3.py b/Lib/test/test_bsddb3.py
index dcc7c43..8b0c50c 100644
--- a/Lib/test/test_bsddb3.py
+++ b/Lib/test/test_bsddb3.py
@@ -45,6 +45,7 @@
         'test_recno',
         'test_thread',
         'test_sequence',
+        'test_cursor_pget_bug',
         ]
 
     alltests = unittest.TestSuite()
diff --git a/Misc/NEWS b/Misc/NEWS
index af9cf20..cbdcdac 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -109,9 +109,13 @@
   assuming BerkeleyDB >= 4.0 and 4.4 respectively.  [pybsddb project SF
   patch numbers 1494885 and 1494902]
 
-- bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class
+- bsddb: added an interface for the BerkeleyDB >= 4.3 DBSequence class.
   [pybsddb project SF patch number 1466734]
 
+- bsddb: fix DBCursor.pget() bug with keyword argument names when no data
+  parameter is supplied.  [SF pybsddb bug #1477863]
+
+
 Library
 -------
 
diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c
index 90de6ae..b5df605 100644
--- a/Modules/_bsddb.c
+++ b/Modules/_bsddb.c
@@ -98,7 +98,7 @@
 #error "eek! DBVER can't handle minor versions > 9"
 #endif
 
-#define PY_BSDDB_VERSION "4.4.2"
+#define PY_BSDDB_VERSION "4.4.4"
 static char *rcs_id = "$Id$";
 
 
@@ -3194,8 +3194,8 @@
     int dlen = -1;
     int doff = -1;
     DBT key, pkey, data;
-    static char* kwnames[] = { "key","data", "flags", "dlen", "doff",
-                                     NULL };
+    static char* kwnames_keyOnly[] = { "key", "flags", "dlen", "doff", NULL };
+    static char* kwnames[] = { "key", "data", "flags", "dlen", "doff", NULL };
 
     CLEAR_DBT(key);
     CLEAR_DBT(data);
@@ -3204,7 +3204,7 @@
     {
         PyErr_Clear();
         if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi|ii:pget",
-                                         &kwnames[1], 
+                                         kwnames_keyOnly, 
 					 &keyobj, &flags, &dlen, &doff))
         {
             PyErr_Clear();
