diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index 2e03673..a2e9f72 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -1,7 +1,7 @@
 from test.support import TESTFN, run_unittest
 import mmap
 import unittest
-import os, re
+import os, re, itertools
 
 PAGESIZE = mmap.PAGESIZE
 
@@ -347,9 +347,21 @@
                     self.assertEqual(m[:], expected)
                     m.close()
 
-        # should not crash
-        m = mmap.mmap(-1, 1)
-        self.assertRaises(ValueError, m.move, 1, 1, -1)
+        # segfault test (Issue 5387)
+        m = mmap.mmap(-1, 100)
+        offsets = [-100, -1, 0, 1, 100]
+        for source, dest, size in itertools.product(offsets, offsets, offsets):
+            try:
+                m.move(source, dest, size)
+            except ValueError:
+                pass
+        self.assertRaises(ValueError, m.move, -1, -1, -1)
+        self.assertRaises(ValueError, m.move, -1, -1, 0)
+        self.assertRaises(ValueError, m.move, -1, 0, -1)
+        self.assertRaises(ValueError, m.move, 0, -1, -1)
+        self.assertRaises(ValueError, m.move, -1, 0, 0)
+        self.assertRaises(ValueError, m.move, 0, -1, 0)
+        self.assertRaises(ValueError, m.move, 0, 0, -1)
         m.close()
 
     def test_anonymous(self):
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index c6c8a30..b9c46cd 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -628,7 +628,7 @@
 	} else {
 		/* bounds check the values */
 		unsigned long pos = src > dest ? src : dest;
-		if (self->size >= pos && count > self->size - pos) {
+		if (self->size < pos || count > self->size - pos) {
 			PyErr_SetString(PyExc_ValueError,
 					"source or destination out of range");
 			return NULL;
