diff --git a/public/src/admin/extend/rewards.js b/public/src/admin/extend/rewards.js
index 50d7503f5a..7fc023eda5 100644
--- a/public/src/admin/extend/rewards.js
+++ b/public/src/admin/extend/rewards.js
@@ -134,7 +134,9 @@ define('admin/extend/rewards', function() {
 			active: [{
 				disabled: true,
 				value: '',
-				claimable: 1
+				claimable: 1,
+				rid: null,
+				id: null
 			}],
 			conditions: conditions,
 			conditionals: conditionals,
diff --git a/src/rewards/admin.js b/src/rewards/admin.js
index 796127b5f3..6136e4f4b3 100644
--- a/src/rewards/admin.js
+++ b/src/rewards/admin.js
@@ -8,14 +8,11 @@ var rewards = {},
 
 rewards.save = function(data, callback) {
 	function save(data, next) {
-		if (!Object.keys(data.rewards).length) {
-			return next();
-		}
-
-		var rewardsData = data.rewards;
-		delete data.rewards;
+		function commit(err, id) {
+			if (err) {
+				return callback(err);
+			}
 
-		db.incrObjectField('global', 'nextRid', function(err, id) {
 			data.id = id;
 			
 			async.parallel([
@@ -32,7 +29,20 @@ rewards.save = function(data, callback) {
 					db.setObject('rewards:id:' + data.id + ':rewards', rewardsData, next);
 				}
 			], next);
-		});
+		}
+
+		if (!Object.keys(data.rewards).length) {
+			return next();
+		}
+
+		var rewardsData = data.rewards;
+		delete data.rewards;
+
+		if (!parseInt(data.id, 10)) {
+			db.incrObjectField('global', 'rewards:id', commit);
+		} else {
+			commit(false, data.id);
+		}
 	}
 
 	async.each(data, save, function(err) {