diff --git a/steam/steamid.py b/steam/steamid.py
index 1357a49..8ea5338 100644
--- a/steam/steamid.py
+++ b/steam/steamid.py
@@ -289,7 +289,10 @@ def make_steam64(id=0, *args, **kwargs):
                 universe = EUniverse.Public
             # 64 bit
             elif value < 2**64:
-                return value
+                accountid = value & 0xFFFFFFFF
+                instance = (value >> 32) & 0xFFFFF
+                etype = (value >> 52) & 0xF
+                universe = (value >> 56) & 0xFF
             # invalid account id
             else:
                 accountid = 0
diff --git a/tests/test_steamid.py b/tests/test_steamid.py
index 46f06f7..b8e59a3 100644
--- a/tests/test_steamid.py
+++ b/tests/test_steamid.py
@@ -7,6 +7,9 @@ from steam import steamid
 from steam.steamid import SteamID, ETypeChar
 from steam.enums import EType, EUniverse, EInstanceFlag
 
+def create_steam64(accountid, etype, euniverse, instance):
+    return (euniverse << 56) | (etype << 52) | (instance << 32) | accountid
+
 
 class SteamID_initialization(unittest.TestCase):
     def compare(self, obj, test_list):
@@ -82,6 +85,14 @@ class SteamID_initialization(unittest.TestCase):
                      [4, EType.Clan, EUniverse.Public, 0]
                      )
 
+    def test_arg_steam64_invalid_universe(self):
+        with self.assertRaises(ValueError):
+            SteamID(create_steam64(1, 1, 255, 1))
+
+    def test_arg_steam64_invalid_type(self):
+        with self.assertRaises(ValueError):
+            SteamID(create_steam64(1, 15, 1, 1))
+
     ######################################################
     # 1 arg - steam2/steam3 format
     ######################################################