Multi-carrier code-division multiple access (MC-CDMA) is a multiple access scheme used in OFDM-based telecommunication systems, allowing the system to support multiple users at the same time over same frequency band. MC-CDMA spreads each user symbol in the frequency domain. That is, each user symbol is carried over multiple parallel subcarriers, but it is phase-shifted (typically 0 or 180 degrees) according to a code value. The code values differ per subcarrier and per user. The receiver combines all subcarrier signals, by weighing these to compensate varying signal strengths and undo the code shift. The receiver can separate signals of different users, because these have different (e.g. orthogonal) code values. Since each data symbol occupies a much wider bandwidth (in hertz) than the data rate (in bit/s), a ratio of signal to noise-plus-interference (if defined as signal power divided by total noise plus interference power in the entire transmission band) of less than 0 dB is feasible. One way of interpreting MC-CDMA is to regard it as a direct-sequence CDMA signal (DS-CDMA), which is transmitted after it has been fed through an inverse FFT (fast Fourier transform). Rationale Wireless radio links suffer from frequency-selective channel interference. If the signal on one subcarrier experiences an outage, it can still be reconstructed from the energy received over other subcarriers. Downlink: MC-CDM In the downlink (one base station transmitting to one or more terminals), MC-CDMA typically reduces to Multi-Carrier Code Division Multiplexing. All user signals can easily be synchronized, and all signals on one subcarrier experience the same radio channel properties. In such case a preferred system implementation is to take N user bits (possibly but not necessarily for different destinations), to transform these using a Walsh Hadamard transform, followed by an IFFT. Variants A number of alternative possibilities exist as to how this frequency domain spreading can take place, such as by using a long PN code and multiplying each data symbol, di, on a subcarrier by a chip from the PN code, ci, or by using short PN codes and spreading each data symbol by an individual PN code — i.e. di is multiplied by each ci and the resulting vector is placed on Nfreq subcarriers, where Nfreq is the PN code length. Once frequency domain spreading has taken place and the OFDM subcarriers have all been allocated values, OFDM modulation then takes place using the IFFT to produce an OFDM symbol; the