diff --git a/src/hybrid_decoder.c b/src/hybrid_decoder.c
index 8425350a59939b10f5f7562be2a55c7b228604e7..27f4d0e2d125384345082ab7d780b958430bd2d3 100644
--- a/src/hybrid_decoder.c
+++ b/src/hybrid_decoder.c
@@ -82,8 +82,11 @@ int hybrid_decode(HybridDecoder *st, const unsigned char *data,
     SKP_int16 silk_frame_size;
     short pcm_celt[960];
 
-	ec_byte_readinit(&buf,(unsigned char*)data,len);
-	ec_dec_init(&dec,&buf);
+    if (data != NULL)
+    {
+        ec_byte_readinit(&buf,(unsigned char*)data,len);
+        ec_dec_init(&dec,&buf);
+    }
 
     if (st->mode != MODE_CELT_ONLY)
     {
@@ -92,7 +95,7 @@ int hybrid_decode(HybridDecoder *st, const unsigned char *data,
         /* We Should eventually have to set the bandwidth here */
 
         /* Call SILK encoder for the low band */
-        silk_ret = SKP_Silk_SDK_Decode( st->silk_dec, &DecControl, 0, &dec, len, pcm, &silk_frame_size );
+        silk_ret = SKP_Silk_SDK_Decode( st->silk_dec, &DecControl, data == NULL, &dec, len, pcm, &silk_frame_size );
         if (silk_ret)
         {
             fprintf (stderr, "SILK decode error\n");
diff --git a/src/hybrid_encoder.c b/src/hybrid_encoder.c
index fd9f599d999892d64e1d4c772dcab0d05d74d825..999acc29b8a235261b93992b9bb05e439aef6a4a 100644
--- a/src/hybrid_encoder.c
+++ b/src/hybrid_encoder.c
@@ -98,7 +98,7 @@ int hybrid_encode(HybridEncoder *st, const short *pcm, int frame_size,
 	{
 	    /* Set Encoder parameters */
 	    encControl.API_sampleRate        = st->Fs;
-	    encControl.packetLossPercentage  = 0;
+	    encControl.packetLossPercentage  = 2;
 	    encControl.useInBandFEC          = 0;
 	    encControl.useDTX                = 0;
 	    encControl.complexity            = 2;
diff --git a/src/test_hybrid.c b/src/test_hybrid.c
index 9a5af094b2d591878a4ea7992e3a51d9b1a67494..407c2d111766298c3b5744ab321ffa2906510bc2 100644
--- a/src/test_hybrid.c
+++ b/src/test_hybrid.c
@@ -55,6 +55,7 @@ int main(int argc, char *argv[])
    int bytes_per_packet;
    unsigned char data[MAX_PACKET];
    int rate;
+   int loss = 0;
    int count = 0;
    int skip;
    short *in, *out;
@@ -62,7 +63,7 @@ int main(int argc, char *argv[])
    if (argc != 9 && argc != 8 && argc != 7)
    {
       fprintf (stderr, "Usage: test_hybrid <rate> <channels> <frame size> "
-               " <bytes per packet>  "
+               " <bytes per packet>  [<packet loss rate>] "
                "<input> <output>\n");
       return 1;
    }
@@ -72,6 +73,10 @@ int main(int argc, char *argv[])
    frame_size = atoi(argv[3]);
 
    bytes_per_packet = atoi(argv[4]);
+
+   if (argc >= 8)
+       loss = atoi(argv[5]);
+
    if (bytes_per_packet < 0 || bytes_per_packet > MAX_PACKET)
    {
       fprintf (stderr, "bytes per packet must be between 0 and %d\n",
@@ -117,7 +122,7 @@ int main(int argc, char *argv[])
          fprintf (stderr, "hybrid_encode() returned %d\n", len);
          return 1;
       }
-      hybrid_decode(dec, data, len, out, frame_size);
+      hybrid_decode(dec, rand()%100<loss ? NULL : data, len, out, frame_size);
       count++;
       fwrite(out+skip, sizeof(short), (frame_size-skip)*channels, fout);
       skip = 0;