diff --git a/cast.go b/cast.go
index dee6787..9c607fa 100644
--- a/cast.go
+++ b/cast.go
@@ -37,6 +37,11 @@
 	return v
 }
 
+func ToStringMapBool(i interface{}) map[string]bool {
+	v, _ := ToStringMapBoolE(i)
+	return v
+}
+
 func ToStringMap(i interface{}) map[string]interface{} {
 	v, _ := ToStringMapE(i)
 	return v
diff --git a/cast_test.go b/cast_test.go
index 56623de..a7ab1a8 100644
--- a/cast_test.go
+++ b/cast_test.go
@@ -40,7 +40,9 @@
 
 func TestMaps(t *testing.T) {
 	var taxonomies = map[interface{}]interface{}{"tag": "tags", "group": "groups"}
+	var stringMapBool = map[interface{}]interface{}{"v1": true, "v2": false}
 	assert.Equal(t, ToStringMap(taxonomies), map[string]interface{}{"tag": "tags", "group": "groups"})
+	assert.Equal(t, ToStringMapBool(stringMapBool), map[string]bool{"v1": true, "v2": false})
 }
 
 func TestToBool(t *testing.T) {
@@ -53,7 +55,7 @@
 	assert.Equal(t, ToBool("F"), false)
 	assert.Equal(t, ToBool(false), false)
 	assert.Equal(t, ToBool("foo"), false)
-	
+
 	assert.Equal(t, ToBool("true"), true)
 	assert.Equal(t, ToBool("TRUE"), true)
 	assert.Equal(t, ToBool("True"), true)
@@ -61,4 +63,5 @@
 	assert.Equal(t, ToBool("T"), true)
 	assert.Equal(t, ToBool(1), true)
 	assert.Equal(t, ToBool(true), true)
+	assert.Equal(t, ToBool(-1), true)
 }
diff --git a/caste.go b/caste.go
index d8b1aa9..9f5916a 100644
--- a/caste.go
+++ b/caste.go
@@ -41,7 +41,7 @@
 	case nil:
 		return false, nil
 	case int:
-		if i.(int) > 0 {
+		if i.(int) != 0 {
 			return true, nil
 		}
 		return false, nil
@@ -161,6 +161,30 @@
 	return m, fmt.Errorf("Unable to Cast %#v to map[string]string", i)
 }
 
+func ToStringMapBoolE(i interface{}) (map[string]bool, error) {
+	jww.DEBUG.Println("ToStringMapBoolE called on type:", reflect.TypeOf(i))
+
+	var m = map[string]bool{}
+
+	switch v := i.(type) {
+	case map[interface{}]interface{}:
+		for k, val := range v {
+			m[ToString(k)] = ToBool(val)
+		}
+		return m, nil
+	case map[string]interface{}:
+		for k, val := range v {
+			m[ToString(k)] = ToBool(val)
+		}
+		return m, nil
+	case map[string]bool:
+		return v, nil
+	default:
+		return m, fmt.Errorf("Unable to Cast %#v to map[string]bool", i)
+	}
+	return m, fmt.Errorf("Unable to Cast %#v to map[string]bool", i)
+}
+
 func ToStringMapE(i interface{}) (map[string]interface{}, error) {
 	jww.DEBUG.Println("ToStringMapE called on type:", reflect.TypeOf(i))
 
