diff --git a/lib/misc_utils/bursts_printer_impl.cc b/lib/misc_utils/bursts_printer_impl.cc
index cd42f12..8be1422 100644
--- a/lib/misc_utils/bursts_printer_impl.cc
+++ b/lib/misc_utils/bursts_printer_impl.cc
@@ -43,8 +43,15 @@
         gsmtap_hdr * header = (gsmtap_hdr *)pmt::blob_data(header_plus_burst);
         int8_t * burst = (int8_t *)(pmt::blob_data(header_plus_burst))+sizeof(gsmtap_hdr);
         size_t burst_len=pmt::blob_length(header_plus_burst)-sizeof(gsmtap_hdr);
+        uint32_t frame_nr;
         
         std::cout << d_prepend_string;
+        if (d_prepend_fnr) 
+        {
+            frame_nr = be32toh(header->frame_number);
+            std::cout << frame_nr << ":";
+        } 
+
         for(int ii=0; ii<burst_len; ii++)
         {
           std::cout << std::setprecision(1) << static_cast<int>(burst[ii]) << "";
@@ -53,21 +60,22 @@
     }
      
     bursts_printer::sptr
-    bursts_printer::make(pmt::pmt_t prepend_string)
+    bursts_printer::make(pmt::pmt_t prepend_string, bool prepend_fnr)
     {
       return gnuradio::get_initial_sptr
-        (new bursts_printer_impl(prepend_string));
+        (new bursts_printer_impl(prepend_string, prepend_fnr));
     }
 
     /*
      * The private constructor
      */
-    bursts_printer_impl::bursts_printer_impl(pmt::pmt_t prepend_string)
+    bursts_printer_impl::bursts_printer_impl(pmt::pmt_t prepend_string, bool prepend_fnr)
       : gr::block("bursts_printer",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0))
     {
         d_prepend_string = prepend_string;
+        d_prepend_fnr = prepend_fnr;
         message_port_register_in(pmt::mp("bursts"));
         set_msg_handler(pmt::mp("bursts"), boost::bind(&bursts_printer_impl::bursts_print, this, _1));
     }
