diff --git a/core/src/main/scala/spark/RDD.scala b/core/src/main/scala/spark/RDD.scala
index 12e2f4f9028de89a5e64cb4c7e6b08eeb1b4bb3a..40eb7967ec6defef8612c684001cea6982cc6490 100644
--- a/core/src/main/scala/spark/RDD.scala
+++ b/core/src/main/scala/spark/RDD.scala
@@ -107,7 +107,14 @@ abstract class RDD[T: ClassManifest](@transient sc: SparkContext) {
   }
   
   def count(): Long = {
-    sc.runJob(this, (iter: Iterator[T]) => iter.size.toLong).sum
+    sc.runJob(this, (iter: Iterator[T]) => {
+      var result = 0L
+      while (iter.hasNext) {
+        result += 1L
+        iter.next
+      }
+      result
+    }).sum
   }
 
   def toArray(): Array[T] = collect()