diff --git src/wp-includes/post.php src/wp-includes/post.php
index 6360735..4997766 100644
--- src/wp-includes/post.php
+++ src/wp-includes/post.php
@@ -3538,11 +3538,16 @@ function wp_update_post( $postarr = array(), $wp_error = false ) {
 		$post_cats = $post['post_category'];
 
 	// Drafts shouldn't be assigned a date unless explicitly done so by the user.
-	if ( isset( $post['post_status'] ) && in_array($post['post_status'], array('draft', 'pending', 'auto-draft')) && empty($postarr['edit_date']) &&
-			 ('0000-00-00 00:00:00' == $post['post_date_gmt']) )
-		$clear_date = true;
-	else
-		$clear_date = false;
+	$clear_date = false;
+	if ( isset( $post['post_status'] ) && in_array($post['post_status'], array('draft', 'pending', 'auto-draft')) ) {
+		// edit_date will only be set for date edits made throug wp-admin, not through XMRLPC API
+		$missing_admin_edit_flag = empty( $postarr['edit_date'] );
+		$missing_post_date = ( '0000-00-00 00:00:00' == $post['post_date_gmt'] );
+		$missing_post_date_gmt = ( '0000-00-00 00:00:00' == $post['post_date'] );
+		if ( $missing_admin_edit_flag && $missing_post_date && $missing_post_date_gmt ) {
+			$clear_date = true;
+		}
+	}
 
 	// Merge old and new fields with new fields overwriting old ones.
 	$postarr = array_merge($post, $postarr);
