diff --git a/lib/producer.js b/lib/producer.js
index <HASH>..<HASH> 100644
--- a/lib/producer.js
+++ b/lib/producer.js
@@ -75,7 +75,7 @@ function Producer(conf, topicConf) {
   this.globalConfig = conf;
   this.topicConfig = topicConf;
   this.defaultTopic = gTopic || null;
-  this.defaultPartition = gPart || null;
+  this.defaultPartition = gPart == null ? -1 : gPart;
 
   this.outstandingMessages = 0;
   this.sentMessages = 0;
@@ -189,7 +189,7 @@ Producer.prototype.produceSync = function(msg) {
   this.sentMessages++;
 
   var topic = msg.topic || false;
-  var partition = msg.partition || this.defaultPartition;
+  var partition = msg.partition == null ? this.defaultPartition : msg.partition;
 
   if (!topic) {
     throw new TypeError('"topic" needs to be set');
Do null checking on partition instead of checking falsiness (#<I>)