diff --git a/lib/class/OptionRegistry.js b/lib/class/OptionRegistry.js
index bf56c1ff7b7d18b722a7f2b990b33c4729d0e3d0..5736c386c65fbfe2794bad7d5815cc0b3fc2291d 100644
Binary files a/lib/class/OptionRegistry.js and b/lib/class/OptionRegistry.js differ
diff --git a/lib/types/array.js b/lib/types/array.js
index 497432959b875cc64b3e7283ec3de10e0b16eac7..24a8e05ba9eff2c66542be2d63edf4db55dbd0eb 100644
Binary files a/lib/types/array.js and b/lib/types/array.js differ
diff --git a/ts/class/OptionRegistry.ts b/ts/class/OptionRegistry.ts
index 4120800c848f05aa30e88aa24ebd56c32414898c..3af4e746b9c195113034f5a46079725a192771c5 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['defaultMinItems'] = 0;
     this.data['defaultRandExpMax'] = 10;
     this.data['alwaysFakeOptionals'] = false;
   }
diff --git a/ts/types/array.ts b/ts/types/array.ts
index 0699f29f46950b19252befb9884cb1a510743aac..a8871aa2f3df484213ea32dd3118872d187833ed 100644
--- a/ts/types/array.ts
+++ b/ts/types/array.ts
@@ -60,6 +60,13 @@ var arrayType: FTypeGenerator = function arrayType(value: IArraySchema, path: Sc
   var minItems = value.minItems;
   var maxItems = value.maxItems;
 
+  if (option('defaultMinItems') && minItems === undefined) {
+    // fix boundaries
+    minItems = !maxItems
+      ? option('defaultMinItems')
+      : Math.min(option('defaultMinItems'), maxItems);
+  }
+
   if (option('maxItems')) {
     // Don't allow user to set max items above our maximum
     if (maxItems && maxItems > option('maxItems')) {