Index: wp-includes/cron.php
===================================================================
--- wp-includes/cron.php	(revision 18670)
+++ wp-includes/cron.php	(working copy)
@@ -249,7 +249,7 @@
 }
 
 /**
- * Run scheduled callbacks or spawn cron for all scheduled events.
+ * Run scheduled callbacks or spawn cron for all scheduled events. Adapted from wp-cron.php
  *
  * @since 2.1.0
  *
@@ -269,14 +269,25 @@
 	if ( isset($keys[0]) && $keys[0] > $local_time )
 		return;
 
-	$schedules = wp_get_schedules();
 	foreach ( $crons as $timestamp => $cronhooks ) {
-		if ( $timestamp > $local_time ) break;
-		foreach ( (array) $cronhooks as $hook => $args ) {
-			if ( isset($schedules[$hook]['callback']) && !call_user_func( $schedules[$hook]['callback'] ) )
-				continue;
-			spawn_cron( $local_time );
-			break 2;
+		if ( $timestamp > $local_time )
+			break;
+
+		foreach ( (array) $cronhooks as $hook => $keys ) {
+
+			foreach ( $keys as $k => $v ) {
+
+				$schedule = $v['schedule'];
+
+				if ( $schedule != false ) {
+					$new_args = array( $timestamp, $schedule, $hook, $v['args'] );
+					call_user_func_array( 'wp_reschedule_event', $new_args );
+				}
+
+				wp_unschedule_event( $timestamp, $hook, $v['args'] );
+
+				do_action_ref_array( $hook, $v['args'] );
+			}
 		}
 	}
 }
