diff --git a/include/osmocom/mgcp/mgcp_internal.h b/include/osmocom/mgcp/mgcp_internal.h
index c3f9ba1..8d82b14 100644
--- a/include/osmocom/mgcp/mgcp_internal.h
+++ b/include/osmocom/mgcp/mgcp_internal.h
@@ -50,14 +50,21 @@
 };
 
 struct mgcp_rtp_state {
+	/* has this state structure been initialized? */
 	int initialized;
-	int patch_ssrc;
 
-	uint32_t orig_ssrc;
+	struct {
+		/* are we patching the SSRC value? */
+		int patch_ssrc;
+		/* original SSRC (to which we shall patch any different SSRC) */
+		uint32_t orig_ssrc;
+		/* offset to apply on the sequence number */
+		int seq_offset;
+		/* offset to apply on the timestamp number */
+		int32_t timestamp_offset;
+	} patch;
 
-	int seq_offset;
-
-	int32_t  timestamp_offset;
+	/* duration of a packet (FIXME: in which unit?) */
 	uint32_t packet_duration;
 
 	struct mgcp_rtp_stream_state in_stream;
diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c
index aac3e51..8c0a7e3 100644
--- a/src/libosmo-mgcp/mgcp_network.c
+++ b/src/libosmo-mgcp/mgcp_network.c
@@ -231,7 +231,7 @@
 			     "on 0x%x SSRC: %u timestamp: %u "
 			     "from %s:%d\n",
 			     text, seq,
-			     state->timestamp_offset, state->seq_offset,
+			     state->patch.timestamp_offset, state->patch.seq_offset,
 			     ENDPOINT_NUMBER(endp), sstate->ssrc, timestamp,
 			     inet_ntoa(addr->sin_addr), ntohs(addr->sin_port));
 		}
@@ -325,15 +325,15 @@
 	out_timestamp = state->out_stream.last_timestamp + delta_seq * tsdelta;
 	timestamp_offset = out_timestamp - in_timestamp;
 
-	if (state->timestamp_offset != timestamp_offset) {
-		state->timestamp_offset = timestamp_offset;
+	if (state->patch.timestamp_offset != timestamp_offset) {
+		state->patch.timestamp_offset = timestamp_offset;
 
 		LOGP(DRTP, LOGL_NOTICE,
 		     "Timestamp offset change on 0x%x SSRC: %u "
 		     "SeqNo delta: %d, TS offset: %d, "
 		     "from %s:%d\n",
 		     ENDPOINT_NUMBER(endp), state->in_stream.ssrc,
-		     delta_seq, state->timestamp_offset,
+		     delta_seq, state->patch.timestamp_offset,
 		     inet_ntoa(addr->sin_addr), ntohs(addr->sin_port));
 	}
 
@@ -354,11 +354,11 @@
 	/* Align according to: T + Toffs - Tlast = k * Tptime */
 
 	ts_error = ts_alignment_error(&state->out_stream, ptime,
-				      timestamp + state->timestamp_offset);
+				      timestamp + state->patch.timestamp_offset);
 
 	/* If there is an alignment error, we have to compensate it */
 	if (ts_error) {
-		state->timestamp_offset += ptime - ts_error;
+		state->patch.timestamp_offset += ptime - ts_error;
 
 		LOGP(DRTP, LOGL_NOTICE,
 		     "Corrected timestamp alignment error of %d on 0x%x SSRC: %u "
@@ -366,7 +366,7 @@
 		     "from %s:%d\n",
 		     ts_error,
 		     ENDPOINT_NUMBER(endp), state->in_stream.ssrc,
-		     state->timestamp_offset, inet_ntoa(addr->sin_addr),
+		     state->patch.timestamp_offset, inet_ntoa(addr->sin_addr),
 		     ntohs(addr->sin_port));
 	}
 
@@ -375,7 +375,7 @@
 	 * here would point to a serous problem with the alingnment
 	 * error computation fuction */
 	ts_check = ts_alignment_error(&state->out_stream, ptime,
-				      timestamp + state->timestamp_offset);
+				      timestamp + state->patch.timestamp_offset);
 	OSMO_ASSERT(ts_check == 0);
 
 	/* Return alignment error before compensation */
@@ -508,7 +508,7 @@
 	if (!state->initialized) {
 		state->initialized = 1;
 		state->in_stream.last_seq = seq - 1;
-		state->in_stream.ssrc = state->orig_ssrc = ssrc;
+		state->in_stream.ssrc = state->patch.orig_ssrc = ssrc;
 		state->in_stream.last_tsdelta = 0;
 		state->packet_duration =
 		    mgcp_rtp_packet_duration(endp, rtp_end);
@@ -519,7 +519,7 @@
 		     "endpoint:0x%x initializing stream, SSRC: %u timestamp: %u "
 		     "pkt-duration: %d, from %s:%d\n",
 		     ENDPOINT_NUMBER(endp), state->in_stream.ssrc,
-		     state->seq_offset, state->packet_duration,
+		     state->patch.seq_offset, state->packet_duration,
 		     inet_ntoa(addr->sin_addr), ntohs(addr->sin_port));
 		if (state->packet_duration == 0) {
 			state->packet_duration =
@@ -543,7 +543,7 @@
 			int16_t delta_seq;
 
 			/* Always increment seqno by 1 */
-			state->seq_offset =
+			state->patch.seq_offset =
 			    (state->out_stream.last_seq + 1) - seq;
 
 			/* Estimate number of packets that would have been sent */
@@ -555,8 +555,8 @@
 			adjust_rtp_timestamp_offset(endp, state, rtp_end, addr,
 						    delta_seq, timestamp);
 
-			state->patch_ssrc = 1;
-			ssrc = state->orig_ssrc;
+			state->patch.patch_ssrc = 1;
+			ssrc = state->patch.orig_ssrc;
 			if (rtp_end->force_constant_ssrc != -1)
 				rtp_end->force_constant_ssrc -= 1;
 
@@ -565,7 +565,7 @@
 			     "SeqNo offset: %d, TS offset: %d "
 			     "from %s:%d\n",
 			     ENDPOINT_NUMBER(endp), state->in_stream.ssrc,
-			     state->seq_offset, state->timestamp_offset,
+			     state->patch.seq_offset, state->patch.timestamp_offset,
 			     inet_ntoa(addr->sin_addr), ntohs(addr->sin_port));
 		}
 
@@ -576,8 +576,8 @@
 				    addr, seq, timestamp, "input",
 				    &state->in_stream.last_tsdelta);
 
-		if (state->patch_ssrc)
-			ssrc = state->orig_ssrc;
+		if (state->patch.patch_ssrc)
+			ssrc = state->patch.orig_ssrc;
 	}
 
 	/* Save before patching */
@@ -592,15 +592,15 @@
 					   timestamp);
 
 	/* Store the updated SSRC back to the packet */
-	if (state->patch_ssrc)
+	if (state->patch.patch_ssrc)
 		rtp_hdr->ssrc = htonl(ssrc);
 
 	/* Apply the offset and store it back to the packet.
 	 * This won't change anything if the offset is 0, so the conditional is
 	 * omitted. */
-	seq += state->seq_offset;
+	seq += state->patch.seq_offset;
 	rtp_hdr->sequence = htons(seq);
-	timestamp += state->timestamp_offset;
+	timestamp += state->patch.timestamp_offset;
 	rtp_hdr->timestamp = htonl(timestamp);
 
 	/* Check again, whether the timestamps are still valid */
