diff --git a/api/soap/mc_issue_api.php b/api/soap/mc_issue_api.php
index 57aa6ca..c40a0bb 100644
--- a/api/soap/mc_issue_api.php
+++ b/api/soap/mc_issue_api.php
@@ -352,38 +352,42 @@ function mci_issue_set_monitors( $p_issue_id , $p_user_id, $p_monitors ) {
 	foreach ( $p_monitors as $t_monitor )
 		$t_monitors[] = $t_monitor['id'];
 
-	foreach ( $t_monitors as $t_user_id ) {
+  // unmonitor existing monitors
+  foreach ( $t_existing_monitors as $t_user_id ) {
 
 		if ( $p_user_id == $t_user_id ) {
 			if ( ! access_has_bug_level( config_get( 'monitor_bug_threshold' ), $p_issue_id ) )
 				continue;
 		} else {
-			if ( !access_has_bug_level( config_get( 'monitor_add_others_bug_threshold' ), $p_issue_id ) )
+			if ( !access_has_bug_level( config_get( 'monitor_delete_others_bug_threshold' ), $p_issue_id ) )
 				continue;
 		}
 
-		if ( in_array( $p_user_id, $t_existing_monitors) )
+		if ( in_array( $p_user_id, $t_monitors) )
 			continue;
 
-		bug_monitor( $p_issue_id, $t_user_id);
+		bug_unmonitor( $p_issue_id, $t_user_id);
 	}
-
-	foreach ( $t_existing_monitors as $t_user_id ) {
+	
+	// monitor monitors based on the passed in user ids
+	foreach ( $t_monitors as $t_user_id ) {
 
 		if ( $p_user_id == $t_user_id ) {
 			if ( ! access_has_bug_level( config_get( 'monitor_bug_threshold' ), $p_issue_id ) )
 				continue;
 		} else {
-			if ( !access_has_bug_level( config_get( 'monitor_delete_others_bug_threshold' ), $p_issue_id ) )
+			if ( !access_has_bug_level( config_get( 'monitor_add_others_bug_threshold' ), $p_issue_id ) )
 				continue;
 		}
 
-		if ( in_array( $p_user_id, $t_monitors) )
+		if ( in_array( $p_user_id, $t_existing_monitors) )
 			continue;
 
-		bug_unmonitor( $p_issue_id, $t_user_id);
+		bug_monitor( $p_issue_id, $t_user_id);
 	}
 
+
+
 }
 
 /**
