Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 19751)
+++ wp-includes/post.php	(working copy)
@@ -2466,7 +2466,7 @@
 	// Make sure we set a valid category.
 	if ( empty($post_category) || 0 == count($post_category) || !is_array($post_category) ) {
 		// 'post' requires at least one category.
-		if ( 'post' == $post_type && 'auto-draft' != $post_status )
+		if( 'post' == $post_type && 'auto-draft' != $post_status && ( !isset( $ID ) || ! has_category( '', get_post( $ID ) ) ) )
 			$post_category = array( get_option('default_category') );
 		else
 			$post_category = array();
@@ -2609,7 +2609,7 @@
 		$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
 	}
 
-	if ( is_object_in_taxonomy($post_type, 'category') )
+	if ( is_object_in_taxonomy($post_type, 'category') && !empty( $post_category ) )
 		wp_set_post_categories( $post_ID, $post_category );
 
 	if ( isset( $tags_input ) && is_object_in_taxonomy($post_type, 'post_tag') )
