Не совсем понимаю для чего мешать ответственности. DTO - переносимый объект, там могут быть и null. Если логика вашей реализации подразумевает, что для каких-то свойств не должно быть null, то это отдельный слой - DTO builder или Validator, это не ответсвенность Calculator.