diff --git a/cast.go b/cast.go
index de5a686..6ca3e0e 100644
--- a/cast.go
+++ b/cast.go
@@ -67,6 +67,11 @@
 	return v
 }
 
+func ToBoolSlice(i interface{}) []bool {
+	v, _ := ToBoolSliceE(i)
+	return v
+}
+
 func ToStringSlice(i interface{}) []string {
 	v, _ := ToStringSliceE(i)
 	return v
diff --git a/cast_test.go b/cast_test.go
index fa1ea23..8f6d40b 100644
--- a/cast_test.go
+++ b/cast_test.go
@@ -141,6 +141,10 @@
 	assert.Equal(t, []int{1, 3}, ToIntSlice([]interface{}{1.2, 3.2}))
 	assert.Equal(t, []int{2, 3}, ToIntSlice([]string{"2", "3"}))
 	assert.Equal(t, []int{2, 3}, ToIntSlice([2]string{"2", "3"}))
+	assert.Equal(t, []bool{true, false, true}, ToBoolSlice([]bool{true, false, true}))
+	assert.Equal(t, []bool{true, false, true}, ToBoolSlice([]interface{}{true, false, true}))
+	assert.Equal(t, []bool{true, false, true}, ToBoolSlice([]int{1,0,1}))
+	assert.Equal(t, []bool{true, false, true}, ToBoolSlice([]string{"true","false","true"}))
 }
 
 func TestToBool(t *testing.T) {
diff --git a/caste.go b/caste.go
index 9475ca7..38d03de 100644
--- a/caste.go
+++ b/caste.go
@@ -422,6 +422,38 @@
 	}
 }
 
+// ToBoolSliceE casts an empty interface to a []bool.
+func ToBoolSliceE(i interface{}) ([]bool, error) {
+	jww.DEBUG.Println("ToBoolSliceE called on type:", reflect.TypeOf(i))
+
+	if i == nil {
+		return []bool{}, fmt.Errorf("Unable to Cast %#v to []bool", i)
+	}
+
+	switch v := i.(type) {
+	case []bool:
+		return v, nil
+	}
+
+	kind := reflect.TypeOf(i).Kind()
+	switch kind {
+	case reflect.Slice, reflect.Array:
+		s := reflect.ValueOf(i)
+		a := make([]bool, s.Len())
+		for j := 0; j < s.Len(); j++ {
+			val, err := ToBoolE(s.Index(j).Interface())
+			if err != nil {
+				return []bool{}, fmt.Errorf("Unable to Cast %#v to []bool", i)
+			}
+			a[j] = val
+		}
+		return a, nil
+	default:
+		return []bool{}, fmt.Errorf("Unable to Cast %#v to []bool", i)
+	}
+}
+
+
 // ToStringSliceE casts an empty interface to a []string.
 func ToStringSliceE(i interface{}) ([]string, error) {
 	jww.TRACE.Println("ToStringSliceE called on type:", reflect.TypeOf(i))
