diff --git a/chrome/content/zotero/xpcom/data/creators.js b/chrome/content/zotero/xpcom/data/creators.js
index 94fbeaae8..ae21064df 100644
--- a/chrome/content/zotero/xpcom/data/creators.js
+++ b/chrome/content/zotero/xpcom/data/creators.js
@@ -165,13 +165,14 @@ Zotero.Creators = new function() {
 		if (data.name !== undefined && data.fieldMode === 0) {
 			throw new Error("'fieldMode' cannot be 0 with 'name' property");
 		}
-		if (data.fieldMode === 1 && !(data.firstName === undefined || data.firstName === "")) {
+		if (data.fieldMode === 1
+				&& !(data.firstName === undefined || data.firstName === "" || data.firstName === null)) {
 			throw new Error("'fieldMode' cannot be 1 with 'firstName' property");
 		}
 		if (data.name !== undefined && typeof data.name != 'string') {
 			throw new Error("'name' must be a string");
 		}
-		if (data.firstName !== undefined && typeof data.firstName != 'string') {
+		if (data.firstName !== undefined && data.firstName !== null && typeof data.firstName != 'string') {
 			throw new Error("'firstName' must be a string");
 		}
 		if (data.lastName !== undefined && typeof data.lastName != 'string') {
@@ -189,7 +190,7 @@ Zotero.Creators = new function() {
 			switch (field) {
 			case 'firstName':
 			case 'lastName':
-				if (val === undefined) continue;
+				if (val === undefined || val === null) continue;
 				cleanedData[field] = val.trim().normalize();
 				break;
 			
diff --git a/test/tests/creatorsTest.js b/test/tests/creatorsTest.js
index 90ccf202a..4fc3d5f6f 100644
--- a/test/tests/creatorsTest.js
+++ b/test/tests/creatorsTest.js
@@ -18,4 +18,17 @@ describe("Zotero.Creators", function() {
 			assert.propertyVal(data2, "lastName", data1.lastName);
 		});
 	});
+	
+	describe("#cleanData()", function () {
+		it("should allow firstName to be null for fieldMode 1", function* () {
+			var data = Zotero.Creators.cleanData({
+				firstName: null,
+				lastName: "Test",
+				fieldMode: 1
+			});
+			assert.propertyVal(data, 'fieldMode', 1);
+			assert.propertyVal(data, 'firstName', '');
+			assert.propertyVal(data, 'lastName', 'Test');
+		});
+	});
 });