As title said, when you transform int16, int64 or other digital type (not int) to bool, return an error result. ```go func try() { var i int64 = 1 fmt.Println(cast.ToBool(i)) // false } ``` because cast only assert int type. ```go // ToBoolE casts an interface to a bool type. func ToBoolE(i interface{}) (bool, error) { i = indirect(i) switch b := i.(type) { case bool: return b, nil case nil: return false, nil case int: if i.(int) != 0 { return true, nil } return false, nil case string: return strconv.ParseBool(i.(string)) default: return false, fmt.Errorf("unable to cast %#v of type %T to bool", i, i) } } ```