public BerlinClockRows Build(Time time) { var timePart = ExtractTimePart(time); var amountOfTurnedOnLampsAtFirstRow = timePart / FirstRowLampValue; var amountOfTurnedOffLampsAtFirstRow = FirstRowLampsAmount - amountOfTurnedOnLampsAtFirstRow; var amountOfTurnedOnLampsAtSecondRow = (timePart - (amountOfTurnedOnLampsAtFirstRow * FirstRowLampValue)) / SecondRowLampValue; var amountOfTurnedOffLampsAtSecondRow = SecondRowLampsAmount - amountOfTurnedOnLampsAtSecondRow; return(new BerlinClockRows { FirstRow = _berlinClockRowRenderer.Render(new BerlinClockRendererRequest { AmountOfTurnedOnLamps = amountOfTurnedOnLampsAtFirstRow, AmountOfTurnedOffLamps = amountOfTurnedOffLampsAtFirstRow, TurnedOnLampSign = TurnedOnLampSign, AdditionalFormatting = FirstRowAdditionalFormatting }), SecondRow = _berlinClockRowRenderer.Render(new BerlinClockRendererRequest { AmountOfTurnedOnLamps = amountOfTurnedOnLampsAtSecondRow, AmountOfTurnedOffLamps = amountOfTurnedOffLampsAtSecondRow, TurnedOnLampSign = TurnedOnLampSign }) }); }