@Override
	public List<Double> dataToSignal(Integer input) {
		List<Double> signal = cache.get(input);
		if (signal == null) {
			signal = new ArrayList<>();
			// Fill the array with input's digits:
			int digits = Math.abs(input.intValue());
			int sign = input.intValue() > 0 ? 1 : -1;
			while (digits > 0) {
				signal.add(0, Double.valueOf(digits % 10));
				digits /= 10;
			}
			// Fill the empty digits in front with zeroes:
			while (signal.size() < numberOfSignals()) {
				signal.add(0, Double.valueOf(0));
			}
			// The first element is the sign:
			signal.set(0, Double.valueOf(sign));
			cache.put(input, signal);
		}
		return signal;
	}