diff --git a/core/src/main/scala/spark/Partitioner.scala b/core/src/main/scala/spark/Partitioner.scala
index 0e45ebd35cfb3954871216d901823c1f2133ace0..475da17de5a93d8cd277da77300c327d65dc7485 100644
--- a/core/src/main/scala/spark/Partitioner.scala
+++ b/core/src/main/scala/spark/Partitioner.scala
@@ -8,12 +8,16 @@ abstract class Partitioner extends Serializable {
 class HashPartitioner(partitions: Int) extends Partitioner {
   def numPartitions = partitions
 
-  def getPartition(key: Any) = {
-    val mod = key.hashCode % partitions
-    if (mod < 0) {
-      mod + partitions
+  def getPartition(key: Any): Int = {
+    if (key == null) {
+      return 0
     } else {
-      mod // Guard against negative hash codes
+      val mod = key.hashCode % partitions
+      if (mod < 0) {
+        mod + partitions
+      } else {
+        mod // Guard against negative hash codes
+      }
     }
   }