diff --git a/lib/class/OptionRegistry.js b/lib/class/OptionRegistry.js
index fcb9cbc31973eb496376ca33c6bb79e2439e112d..47a41f68d6b4dae3ae957ee2c74b5c8adf17500f 100644
Binary files a/lib/class/OptionRegistry.js and b/lib/class/OptionRegistry.js differ
diff --git a/lib/types/object.js b/lib/types/object.js
index 57fdacd5ec54f70fa94e5f5fd631e22faf78b474..c64b062589d7f6bf2bcc99cf09ef63bd23074448 100644
Binary files a/lib/types/object.js and b/lib/types/object.js differ
diff --git a/ts/class/OptionRegistry.ts b/ts/class/OptionRegistry.ts
index 3aeb06815e6a52cb2fb62be942ce1f4c936403dc..f663dafd941c1dbf14e67c8b043c7566cd742d63 100644
--- a/ts/class/OptionRegistry.ts
+++ b/ts/class/OptionRegistry.ts
@@ -14,6 +14,7 @@ class OptionRegistry extends Registry<Option> {
     this.data['useDefaultValue'] = false;
     this.data['maxItems'] = null;
     this.data['maxLength'] = null;
+    this.data['alwaysFakeOptionals'] = false;
   }
 }
 
diff --git a/ts/types/object.ts b/ts/types/object.ts
index 7e334c86afa4bbf915ed9890b2f7a974c4faff36..26747d59a853eab3a7d80b98bc4f1c9b0d7e686c 100644
--- a/ts/types/object.ts
+++ b/ts/types/object.ts
@@ -2,6 +2,7 @@ import container = require('../class/Container');
 import random = require('../core/random');
 import words = require('../generators/words');
 import utils = require('../core/utils');
+import option = require('../api/option');
 import ParseError = require('../core/error');
 
 var randexp = container.get('randexp');
@@ -44,7 +45,8 @@ var objectType: FTypeGenerator = function objectType(value: IObjectSchema, path,
     });
 
     // properties are read from right-to-left
-    var _props = requiredProperties.slice(0, random.number(min, max));
+    var _props = option('alwaysFakeOptionals') ? requiredProperties
+      : requiredProperties.slice(0, random.number(min, max));
 
     _props.forEach(function(key) {
         // first ones are the required properies