A method for transmitting a broadcast signal, the method comprising: encoding service data; time interleaving the encoded service data belonging to a Time Interleaving, TI, block, wherein the TI block includes a number of actual Forward Error Correction, FEC, blocks having the encoded service data, the TI block further includes a number of virtual FEC blocks, N BLOCK_TI_Diff, and the number of virtual FEC blocks, N BLOCK_TI_Diff, is equal to a difference between the number of actual FEC blocks of the TI block, N BLOCK_TI, and a maximum value for the TI block, N' BLOCK_TI_MAX, the time interleaving is performed by column-wise writing the actual FEC blocks into a memory for the TI block that includes a number of rows, N cells, and a number of columns, N c, wherein the virtual FEC blocks are ahead of the written actual FEC blocks, and diagonal-wise reading out cells of the written actual FEC blocks from a top row to a bottom row of the memory by calculating memory addresses of cells in the actual FEC blocks and the virtual FEC blocks, the memory addresses of cells are calculated as V(k)=N cells c k +r k, wherein N cells is the number of rows, k is 0≤k≤N cells N' BLOCK_TI_MAX -1, N' BLOCK_TI_MAX is the maximum value for the TI block, r k is a row index and c k is a column index, when a condition of V(k)≥N cells N BLOCK_TI_Diff is not satisfied, a cell in V(k) is a cell of the virtual FEC blocks and the cell is skipped during diagonal-wise reading operation; building at least one signal frame including the time interleaved service data; modulating data in the built at least one signal frame by an Orthogonal Frequency Division Multiplex, OFDM, scheme; and transmitting the broadcast signal including the modulated data. encoding service data; time interleaving the encoded service data belonging to a Time Interleaving, TI, block, wherein the TI block includes a number of actual Forward Error Correction, FEC, blocks having the encoded service data, the TI block further includes a number of virtual FEC blocks, N BLOCK_TI_Diff, and the number of virtual FEC blocks, N BLOCK_TI_Diff, is equal to a difference between the number of actual FEC blocks of the TI block, N BLOCK_TI, and a maximum value for the TI block, N' BLOCK_TI_MAX, the time interleaving is performed by column-wise writing the actual FEC blocks into a memory for the TI block that includes a number of rows, N cells, and a number of columns, N c, wherein the virtual FEC blocks are ahead of the written actual FEC blocks, and diagonal-wise reading out cells of the written actual FEC blocks from a top row to a bottom row of the memory by calculating memory addresses of cells in the actual FEC blocks and the virtual FEC blocks, the memory addresses of cells are calculated as V(k)=N cells c k +r k, wherein N cells is the number of rows, k is 0≤k≤N cells N' BLOCK_TI_MAX -1, N' BLOCK_TI_MAX is the maximum value for the TI block, r k is a row index and c k is a column index, when a condition of V(k)≥N cells N BLOCK_TI_Diff is not satisfied, a cell in V(k) is a cell of the virtual FEC blocks and the cell is skipped during diagonal-wise reading operation; wherein the TI block includes a number of actual Forward Error Correction, FEC, blocks having the encoded service data, the TI block further includes a number of virtual FEC blocks, N BLOCK_TI_Diff, and the number of virtual FEC blocks, N BLOCK_TI_Diff, is equal to a difference between the number of actual FEC blocks of the TI block, N BLOCK_TI, and a maximum value for the TI block, N' BLOCK_TI_MAX, the time interleaving is performed by column-wise writing the actual FEC blocks into a memory for the TI block that includes a number of rows, N cells, and a number of columns, N c, wherein the virtual FEC blocks are ahead of the written actual FEC blocks, and diagonal-wise reading out cells of the written actual FEC blocks from a top row to a bottom row of the memory by calculating memory addresses of cells in the actual FEC blocks and the virtual FEC blocks, the memory addresses of cells are calculated as V(k)=N cells c k +r k, wherein N cells is the number of rows, k is 0≤k≤N cells N' BLOCK_TI_MAX -1, N' BLOCK_TI_MAX is the maximum value for the TI block, r k is a row index and c k is a column index, when a condition of V(k)≥N cells N BLOCK_TI_Diff is not satisfied, a cell in V(k) is a cell of the virtual FEC blocks and the cell is skipped during diagonal-wise reading operation; building at least one signal frame including the time interleaved service data; modulating data in the built at least one signal frame by an Orthogonal Frequency Division Multiplex, OFDM, scheme; and transmitting the broadcast signal including the modulated data.