diff --git a/cast.go b/cast.go
index 0bc8d48..de5a686 100644
--- a/cast.go
+++ b/cast.go
@@ -27,6 +27,11 @@
 	return v
 }
 
+func ToInt64(i interface{}) int64 {
+	v, _ := ToInt64E(i)
+	return v
+}
+
 func ToInt(i interface{}) int {
 	v, _ := ToIntE(i)
 	return v
diff --git a/cast_test.go b/cast_test.go
index debef3d..f135578 100644
--- a/cast_test.go
+++ b/cast_test.go
@@ -23,6 +23,17 @@
 	assert.Equal(t, ToInt(eight), 8)
 }
 
+func TestToInt64(t *testing.T) {
+	var eight interface{} = 8
+	assert.Equal(t, ToInt64(int64(8)), int64(8))
+	assert.Equal(t, ToInt64(8), int64(8))
+	assert.Equal(t, ToInt64(8.31), int64(8))
+	assert.Equal(t, ToInt64("8"), int64(8))
+	assert.Equal(t, ToInt64(true), int64(1))
+	assert.Equal(t, ToInt64(false), int64(0))
+	assert.Equal(t, ToInt64(eight), int64(8))
+}
+
 func TestToFloat64(t *testing.T) {
 	var eight interface{} = 8
 	assert.Equal(t, ToFloat64(8), 8.00)
diff --git a/caste.go b/caste.go
index e0a0004..2a6a1fa 100644
--- a/caste.go
+++ b/caste.go
@@ -111,6 +111,42 @@
 	}
 }
 
+// ToInt64E casts an empty interface to an int64.
+func ToInt64E(i interface{}) (int64, error) {
+	i = indirect(i)
+	jww.DEBUG.Println("ToInt64E called on type:", reflect.TypeOf(i))
+
+	switch s := i.(type) {
+	case int64:
+		return s, nil
+	case int:
+		return int64(s), nil
+	case int32:
+		return int64(s), nil
+	case int16:
+		return int64(s), nil
+	case int8:
+		return int64(s), nil
+	case string:
+		v, err := strconv.ParseInt(s, 0, 0)
+		if err == nil {
+			return v, nil
+		}
+		return 0, fmt.Errorf("Unable to Cast %#v to int64", i)
+	case float64:
+		return int64(s), nil
+	case bool:
+		if bool(s) {
+			return int64(1), nil
+		}
+		return int64(0), nil
+	case nil:
+		return int64(0), nil
+	default:
+		return int64(0), fmt.Errorf("Unable to Cast %#v to int64", i)
+	}
+}
+
 // ToIntE casts an empty interface to an int.
 func ToIntE(i interface{}) (int, error) {
 	i = indirect(i)
