Index: wp-includes/class-wp-xmlrpc-server.php
===================================================================
--- wp-includes/class-wp-xmlrpc-server.php	(revision 18073)
+++ wp-includes/class-wp-xmlrpc-server.php	(working copy)
@@ -496,9 +496,10 @@
 			$page_date_gmt = mysql2date('Ymd\TH:i:s', $page->post_date_gmt, false);
 
 			// For drafts use the GMT version of the date
-			if ( $page->post_status == 'draft' )
+			if ($page->post_status == 'draft' && strcmp($page_date_gmt, '19700101T00:00:00') !=0) 				
 				$page_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $page->post_date ), 'Ymd\TH:i:s' );
 
+				
 			// Pull the categories info together.
 			$categories = array();
 			foreach ( wp_get_post_categories($page->ID) as $cat_id ) {
@@ -682,7 +683,10 @@
 		$username	= $this->escape($args[2]);
 		$password	= $this->escape($args[3]);
 		$content	= $args[4];
-		$publish	= $args[5];
+		if ( isset($args[5]) )
+			$publish = $args[5];
+		else
+			$publish = false;
 
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
@@ -762,7 +766,7 @@
 			$page_list[$i]->date_created_gmt = new IXR_Date($post_date_gmt);
 
 			// For drafts use the GMT version of the date
-			if ( $page_list[$i]->post_status == 'draft' ) {
+			if ( $page_list[$i]->post_status == 'draft' && strcmp($post_date_gmt, '19700101T00:00:00') !=0) {
 				$page_list[$i]->date_created_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $page_list[$i]->post_date ), 'Ymd\TH:i:s' );
 				$page_list[$i]->date_created_gmt = new IXR_Date( $page_list[$i]->date_created_gmt );
 			}
@@ -2382,10 +2386,10 @@
 		if ( !empty( $dateCreated ) ) {
 			$post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
 			$post_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
-		} else {
+		} /*else {
 			$post_date = current_time('mysql');
 			$post_date_gmt = current_time('mysql', 1);
-		}
+		}*/
 
 		$post_category = array();
 		if ( isset( $content_struct['categories'] ) ) {
@@ -2493,8 +2497,11 @@
 		$username  = $args[1];
 		$password   = $args[2];
 		$content_struct = $args[3];
-		$publish     = $args[4];
-
+		if ( isset($args[4]) )
+			$publish = $args[4];
+		else
+			$publish = false;
+			
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
@@ -2710,10 +2717,10 @@
 		if ( !empty( $dateCreated ) ) {
 			$post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
 			$post_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
-		} else {
+		}/* else {
 			$post_date     = $postdata['post_date'];
 			$post_date_gmt = $postdata['post_date_gmt'];
-		}
+		}*/
 
 		// We've got all the data -- post it:
 		$newpost = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'comment_status', 'ping_status', 'post_date', 'post_date_gmt', 'to_ping', 'post_name', 'post_password', 'post_parent', 'menu_order', 'post_author', 'tags_input', 'page_template');
@@ -2782,10 +2789,10 @@
 			$post_date = mysql2date('Ymd\TH:i:s', $postdata['post_date'], false);
 			$post_date_gmt = mysql2date('Ymd\TH:i:s', $postdata['post_date_gmt'], false);
 
-			// For drafts use the GMT version of the post date
-			if ( $postdata['post_status'] == 'draft' )
+			// For drafts use the GMT version
+			if (  $entry['post_status'] == 'draft' && strcmp($post_date_gmt, '19700101T00:00:00') !=0 )
 				$post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $postdata['post_date'] ), 'Ymd\TH:i:s' );
-
+				
 			$categories = array();
 			$catids = wp_get_post_categories($post_ID);
 			foreach($catids as $catid)
@@ -2909,7 +2916,7 @@
 			$post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false);
 
 			// For drafts use the GMT version of the date
-			if ( $entry['post_status'] == 'draft' )
+			if (  $entry['post_status'] == 'draft' && strcmp($post_date_gmt, '19700101T00:00:00') !=0 )
 				$post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_date'] ), 'Ymd\TH:i:s' );
 
 			$categories = array();
@@ -3152,7 +3159,7 @@
 			$post_date_gmt = mysql2date('Ymd\TH:i:s', $entry['post_date_gmt'], false);
 
 			// For drafts use the GMT version of the date
-			if ( $entry['post_status'] == 'draft' )
+			if ($entry['post_status'] == 'draft' && strcmp($post_date_gmt, '19700101T00:00:00') !=0)
 				$post_date_gmt = get_gmt_from_date( mysql2date( 'Y-m-d H:i:s', $entry['post_date'] ), 'Ymd\TH:i:s' );
 
 			$struct[] = array(
