diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c
index e46ce46c39..540ddb9c07 100644
--- a/src/switch_ivr_async.c
+++ b/src/switch_ivr_async.c
@@ -1089,6 +1089,9 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
 		break;
 	case SWITCH_ABC_TYPE_TAP_NATIVE_READ:
 		{
+			switch_time_t now = switch_micro_time_now();
+			switch_time_t diff;
+
 			rh->rready = 1;
 
 			nframe = switch_core_media_bug_get_native_read_frame(bug);
@@ -1100,22 +1103,20 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
 
 				switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
 				switch_core_file_write(&rh->out_fh, fill_data, &fill_len);
-			} else {
-				switch_time_t now = switch_micro_time_now();
-				switch_time_t diff;
+			}
 				
-				if (rh->last_read_time && rh->last_read_time < now) {
-					diff = ((now - rh->last_read_time) + 3000 ) / rh->read_impl.microseconds_per_packet;
+				
+			if (rh->last_read_time && rh->last_read_time < now) {
+				diff = ((now - rh->last_read_time) + 3000 ) / rh->read_impl.microseconds_per_packet;
+				
+				if (diff > 1) {
+					unsigned char fill_data[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
+					switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
 					
-					if (diff > 1) {
-						unsigned char fill_data[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
-						switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
-						
-						while(diff > 1) {
-							switch_size_t fill_len = len;
-							switch_core_file_write(&rh->in_fh, fill_data, &fill_len);
-							diff--;
-						}
+					while(diff > 1) {
+						switch_size_t fill_len = len;
+						switch_core_file_write(&rh->in_fh, fill_data, &fill_len);
+						diff--;
 					}
 				}
 			}
@@ -1127,6 +1128,8 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
 		break;
 	case SWITCH_ABC_TYPE_TAP_NATIVE_WRITE:
 		{
+			switch_time_t now = switch_micro_time_now();
+			switch_time_t diff;
 			rh->wready = 1;
 			
 			if (!rh->rready) {
@@ -1134,30 +1137,28 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
 				switch_size_t fill_len = len;
 				switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
 				switch_core_file_write(&rh->in_fh, fill_data, &fill_len);
-			} else {
-				switch_time_t now = switch_micro_time_now();
-				switch_time_t diff;
-
-				nframe = switch_core_media_bug_get_native_write_frame(bug);
-				len = nframe->datalen;
+			}
 
 
-				if (rh->last_write_time && rh->last_write_time < now) {
-					diff = ((now - rh->last_write_time) + 3000 ) / rh->read_impl.microseconds_per_packet;
+			nframe = switch_core_media_bug_get_native_write_frame(bug);
+			len = nframe->datalen;
+			
+
+			if (rh->last_write_time && rh->last_write_time < now) {
+				diff = ((now - rh->last_write_time) + 3000 ) / rh->read_impl.microseconds_per_packet;
+				
+				if (diff > 1) {
+					unsigned char fill_data[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
+					switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
 					
-					if (diff > 1) {
-						unsigned char fill_data[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
-						switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
-						
-						while(diff > 1) {
-							switch_size_t fill_len = len;
-							switch_core_file_write(&rh->out_fh, fill_data, &fill_len);
-							diff--;
-						}
+					while(diff > 1) {
+						switch_size_t fill_len = len;
+						switch_core_file_write(&rh->out_fh, fill_data, &fill_len);
+						diff--;
 					}
 				}
 			}
-
+			
 			switch_core_file_write(&rh->out_fh, mask ? null_data : nframe->data, &len);
 			rh->last_write_time = now;