diff --git a/goblin/properties.py b/goblin/properties.py
index f803052436129bda510455fe566010699c857be1..912bb20c1787e0551d0ec2ac7cb0673468974762 100644
--- a/goblin/properties.py
+++ b/goblin/properties.py
@@ -172,6 +172,8 @@ class Integer(abc.DataType):
     def validate(self, val):
         if val is not None:
             try:
+                if isinstance(val, long):
+                    return long(val)
                 return int(val)
             except (ValueError, TypeError) as e:
                 raise exception.ValidationError(
diff --git a/tests/test_properties.py b/tests/test_properties.py
index bb7a6204cbd305c7eb3f81b023ef4d4555212e1f..c264e5a1d581afbd040b16cb2ed085b4da3bac46 100644
--- a/tests/test_properties.py
+++ b/tests/test_properties.py
@@ -144,6 +144,10 @@ def test_set_change_set_card_vertex_property(place):
 def test_set_card_union(place):
     place.important_numbers = set([1, 2, 3])
     place.important_numbers = place.important_numbers.union({3, 4, 5})
+
+def test_set_card_64bit_integer(place):
+    place.important_numbers = set([long(1), long(2), long(3)])
+    assert all(isinstance(i.value, long) for i in place.important_numbers)
         
 def test_set_card_validation_vertex_property(place):
     with pytest.raises(exception.ValidationError):