diff --git a/src/app/core/field/field.html b/src/app/core/field/field.html
index b3597fd..a91665d 100644
--- a/src/app/core/field/field.html
+++ b/src/app/core/field/field.html
@@ -15,7 +15,6 @@
 limitations under the License.
 -->
 
-
 <label ng-if="vm.field.type !== 'object' && vm.field.type !== 'array'">
     {{vm.field.label}}
     <span class="required" ng-if="vm.field.validators.required">*</span>
diff --git a/src/app/core/field/field.ts b/src/app/core/field/field.ts
index 89fdd76..ab5f1d2 100644
--- a/src/app/core/field/field.ts
+++ b/src/app/core/field/field.ts
@@ -57,7 +57,7 @@
     }
 
     // NOTE set default value (if any)
-    if (this.field.default && !angular.isDefined(this.ngModel)) {
+    if (angular.isDefined(this.field.default) && angular.isUndefined(this.ngModel)) {
       if (this.field.type === 'number') {
         this.ngModel = parseInt(this.field.default, 10);
       }
diff --git a/src/app/core/form/form.html b/src/app/core/form/form.html
index 072039d..d619fc7 100644
--- a/src/app/core/form/form.html
+++ b/src/app/core/form/form.html
@@ -15,8 +15,6 @@
 limitations under the License.
 -->
 
-
-<!--<pre>{{vm.config.inputs | json}}</pre>-->
 <form name="vm.{{vm.config.formName || 'form'}}" novalidate>
     <!--<div class="form-group" ng-repeat="(name, field) in vm.formField">-->
         <!--<xos-field name="name" field="field" ng-model="vm.ngModel[name]"></xos-field>-->
diff --git a/src/app/core/services/helpers/config.helpers.spec.ts b/src/app/core/services/helpers/config.helpers.spec.ts
index f06fc4f..7718a44 100644
--- a/src/app/core/services/helpers/config.helpers.spec.ts
+++ b/src/app/core/services/helpers/config.helpers.spec.ts
@@ -211,6 +211,7 @@
 
       expect(cols[4]).not.toBeDefined();
     });
+
   });
 
   describe('the modelToTableCfg method', () => {
@@ -245,6 +246,26 @@
       expect(inputs[2].validators.min).toBe(20);
       expect(inputs[2].validators.max).toBe(40);
     });
+
+    it('should convert boolean defaults to real booleans', () => {
+      const fields: IXosModelDefsField[] = [
+        {
+          type: 'boolean',
+          name: 'active',
+          default: '"True"',
+          validators: []
+        },
+        {
+          type: 'boolean',
+          name: 'disabled',
+          default: '"False"',
+          validators: []
+        },
+      ];
+      const form_fields = service.modelFieldToInputCfg(fields);
+      expect(form_fields[0].default).toBe(true);
+      expect(form_fields[1].default).toBe(false);
+    });
   });
 
   describe('the modelToFormCfg method', () => {
diff --git a/src/app/core/services/helpers/config.helpers.ts b/src/app/core/services/helpers/config.helpers.ts
index c177568..e4a0a70 100644
--- a/src/app/core/services/helpers/config.helpers.ts
+++ b/src/app/core/services/helpers/config.helpers.ts
@@ -257,7 +257,7 @@
         type: f.type,
         validators: this.formatValidators(f.validators),
         hint: f.hint,
-        default: f.default || null
+        default: this.formatDefaultValues(f.default)
       };
 
       // NOTE populate drop-downs based on relation
@@ -277,6 +277,7 @@
   }
 
   public modelToFormCfg(model: IXosModeldef): IXosFormCfg {
+
     const formCfg: IXosFormCfg = {
       formName: `${model.name}Form`,
       exclude: this.form_excluded_fields,
@@ -338,6 +339,21 @@
     return formCfg;
   }
 
+  private formatDefaultValues(val: any): any {
+
+    if (angular.isString(val)) {
+      const unquoted = val.split('"').join('').toLowerCase();
+      if (unquoted === 'true') {
+        return true;
+      }
+      else if (unquoted === 'false') {
+        return false;
+      }
+    }
+
+    return val || undefined;
+  }
+
   private formatValidators(validators: IXosModelDefsFieldValidators[]): IXosFormInputValidator {
     // convert validators as expressed from modelDefs,
     // to the object required by xosForm
