A method for coding digital data for transmission over a plastic optical fibre, the method comprising the steps of: coding input digital data by a two-level coset coding including: separating the input digital data only into a first portion and a second portion of data, each with a predetermined number of bits including cyclically assigning a first predetermined number of bits to the first portion and a second predetermined number of bits to the second portion; coding the first portion of data with a first shortened BCH code in a first level; in the first level, mapping the coded first portion onto symbols of a first predefined multilevel quadrature amplitude modulation constellation and performing a first-stage lattice transformation of the mapped symbols so as to achieve coset partitioning; in the second level, mapping the second portion onto symbols of a second predefined multilevel quadrature amplitude modulation constellation and performing the first-stage lattice transformation of the mapped symbols; adding the transformed symbols from the first and the second level; performing a second-stage lattice transformation for achieving a zero-mean constellation, and modulating the symbols encoded with the two-level coset coding using a multilevel pulse amplitude modulation including time multiplexing the in-phase and quadrature output of the second-stage lattice transformation in time domain, wherein the first predefined multilevel quadrature amplitude modulation constellation is 16-QAM with Gray mapping whereas the second predefined multilevel quadrature amplitude modulation constellation is 8-QAM with RZ 2 lattice mapping. coding input digital data by a two-level coset coding including: separating the input digital data only into a first portion and a second portion of data, each with a predetermined number of bits including cyclically assigning a first predetermined number of bits to the first portion and a second predetermined number of bits to the second portion; coding the first portion of data with a first shortened BCH code in a first level; in the first level, mapping the coded first portion onto symbols of a first predefined multilevel quadrature amplitude modulation constellation and performing a first-stage lattice transformation of the mapped symbols so as to achieve coset partitioning; in the second level, mapping the second portion onto symbols of a second predefined multilevel quadrature amplitude modulation constellation and performing the first-stage lattice transformation of the mapped symbols; adding the transformed symbols from the first and the second level; performing a second-stage lattice transformation for achieving a zero-mean constellation, and modulating the symbols encoded with the two-level coset coding using a multilevel pulse amplitude modulation including time multiplexing the in-phase and quadrature output of the second-stage lattice transformation in time domain, wherein the first predefined multilevel quadrature amplitude modulation constellation is 16-QAM with Gray mapping whereas the second predefined multilevel quadrature amplitude modulation constellation is 8-QAM with RZ 2 lattice mapping. separating the input digital data only into a first portion and a second portion of data, each with a predetermined number of bits including cyclically assigning a first predetermined number of bits to the first portion and a second predetermined number of bits to the second portion; coding the first portion of data with a first shortened BCH code in a first level; in the first level, mapping the coded first portion onto symbols of a first predefined multilevel quadrature amplitude modulation constellation and performing a first-stage lattice transformation of the mapped symbols so as to achieve coset partitioning; in the second level, mapping the second portion onto symbols of a second predefined multilevel quadrature amplitude modulation constellation and performing the first-stage lattice transformation of the mapped symbols; adding the transformed symbols from the first and the second level; performing a second-stage lattice transformation for achieving a zero-mean constellation, and modulating the symbols encoded with the two-level coset coding using a multilevel pulse amplitude modulation including time multiplexing the in-phase and quadrature output of the second-stage lattice transformation in time domain the first predefined multilevel quadrature amplitude modulation constellation is 16-QAM with Gray mapping whereas the second predefined multilevel quadrature amplitude modulation constellation is 8-QAM with RZ 2 lattice mapping.