diff --git a/src/remote.c b/src/remote.c
index 6b706d9..175786f 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -193,7 +193,7 @@ Remote_fetch(Remote *self, PyObject *args)
       err = git_remote_download(self->remote, NULL, NULL);
       if (err == GIT_OK) {
           stats = git_remote_stats(self->remote);
-          py_stats = Py_BuildValue("{s:i,s:i,s:i}",
+          py_stats = Py_BuildValue("{s:I,s:I,s:n}",
               "indexed_objects", stats->indexed_objects,
               "received_objects", stats->received_objects,
               "received_bytes", stats->received_bytes);
diff --git a/test/test_remote.py b/test/test_remote.py
index 7ac7aac..87c341e 100644
--- a/test/test_remote.py
+++ b/test/test_remote.py
@@ -35,6 +35,8 @@ REMOTE_NAME = 'origin'
 REMOTE_URL = 'git://github.com/libgit2/pygit2.git'
 REMOTE_FETCHSPEC_SRC = 'refs/heads/*'
 REMOTE_FETCHSPEC_DST = 'refs/remotes/origin/*'
+REMOTE_REPO_OBJECTS = 19
+REMOTE_REPO_BYTES = 1586
 
 class RepositoryTest(utils.RepoTestCase):
     def test_remote_create(self):
@@ -93,3 +95,12 @@ class RepositoryTest(utils.RepoTestCase):
         url = 'git://github.com/libgit2/pygit2.git'
         remote = self.repo.remote_create(name, url);
         self.assertTrue(remote.name in [x.name for x in self.repo.remotes])
+
+
+class EmptyRepositoryTest(utils.EmptyRepoTestCase):
+    def test_fetch(self):
+        remote = self.repo.remotes[0]
+        stats = remote.fetch()
+        self.assertEqual(stats['received_bytes'], REMOTE_REPO_BYTES)
+        self.assertEqual(stats['indexed_objects'], REMOTE_REPO_OBJECTS)
+        self.assertEqual(stats['received_objects'], REMOTE_REPO_OBJECTS)