Merge pull request #6 from txgruppi/readme-update

Updated README, it was describing the wrong return type
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))