Index: /libmpc/trunk/libmpcdec/mpc_decoder.c
===================================================================
--- /libmpc/trunk/libmpcdec/mpc_decoder.c	(revision 313)
+++ /libmpc/trunk/libmpcdec/mpc_decoder.c	(revision 314)
@@ -105,5 +105,4 @@
 	d->__r1 = 1;
 	d->__r2 = 1;
-	d->samples_to_skip = MPC_DECODER_SYNTH_DELAY;
 
 	mpc_decoder_init_quant(d, 1.0f);
@@ -116,4 +115,5 @@
 	d->max_band           = si->max_band;
 	d->channels           = si->channels;
+	d->samples_to_skip    = MPC_DECODER_SYNTH_DELAY + si->beg_silence;
 
 	if (si->stream_version == 7 && si->is_true_gapless)
Index: /libmpc/trunk/libmpcdec/mpc_demux.c
===================================================================
--- /libmpc/trunk/libmpcdec/mpc_demux.c	(revision 313)
+++ /libmpc/trunk/libmpcdec/mpc_demux.c	(revision 314)
@@ -435,4 +435,5 @@
 	mpc_uint32_t block_samples = MPC_FRAME_LENGTH << d->si.block_pwr;
 
+	destsample += d->si.beg_silence;
 	if (destsample > d->si.samples) destsample = d->si.samples;
 	fwd = (mpc_uint32_t) (destsample / block_samples);
Index: /libmpc/trunk/libmpcdec/streaminfo.c
===================================================================
--- /libmpc/trunk/libmpcdec/streaminfo.c	(revision 313)
+++ /libmpc/trunk/libmpcdec/streaminfo.c	(revision 314)
@@ -205,7 +205,7 @@
 	si->bitrate = 0;
 
-	if (si->samples != 0)
+	if ((si->samples - si->beg_silence) != 0)
 		si->average_bitrate = (si->tag_offset - si->header_position) * 8.0
-				*  si->sample_freq / si->samples;
+				*  si->sample_freq / (si->samples - si->beg_silence);
 
 	return MPC_STATUS_OK;
@@ -231,9 +231,9 @@
 mpc_streaminfo_get_length(mpc_streaminfo * si)
 {
-    return (double) si->samples / si->sample_freq;
+	return (double) (si->samples - si->beg_silence) / si->sample_freq;
 }
 
 mpc_int64_t mpc_streaminfo_get_length_samples(mpc_streaminfo *si)
 {
-	return si->samples;
-}
+	return si->samples - si->beg_silence;
+}
