diff --git a/otto_test.go b/otto_test.go
index <HASH>..<HASH> 100644
--- a/otto_test.go
+++ b/otto_test.go
@@ -2173,3 +2173,26 @@ func Test_delete(t *testing.T) {
 		delete 42;
 	`, "true")
 }
+
+func TestObject_defineOwnProperty(t *testing.T) {
+	Terst(t)
+
+	test := runTest()
+
+	test(`
+        var object = {};
+
+        var descriptor = new Boolean(false);
+        descriptor.configurable = true;
+
+        Object.defineProperties(object, {
+            property: descriptor
+        });
+
+        var abc = object.hasOwnProperty("property");
+        delete object.property;
+        var def = object.hasOwnProperty("property");
+
+		abc == true && def == false;
+	`, "true")
+}
diff --git a/stash.go b/stash.go
index <HASH>..<HASH> 100644
--- a/stash.go
+++ b/stash.go
@@ -118,7 +118,9 @@ func (self *_objectStash) set(name string, value Value, mode _propertyMode) {
 }
 
 func (self *_objectStash) defineProperty(name string, value interface{}, mode _propertyMode) {
-	// TODO Sanity check value?
+	if value == nil {
+		value = UndefinedValue()
+	}
 	self.propertyMap[name] = _property{value, mode}
 }
If a property is defined without a value (nil interface), define it as undefined