Duvida sobre campo de valores - Primefaces

estou com uma duvida na minha logica, que seria o seguinte

Possuo 2 campos: valor e desconto.

Quando informo o valor e o desconto eu já consigo atualizar os dois componetes até aqui OK.
Agora quero informar o valor com desconto e mostrar no **Total c/ Desconto.

Irei colocar só os campos para o codigo não ficar grande.
tentei fazer mais não consegui e meu codigo está assim.

	<p:outputLabel value="valor" for="valor" />
		<p:inputText  styleClass="moeda" value="#{cadastroServicoBean.servico.valor}"  size="5" id="valor"  required="true">
			<f:convertNumber minFractionDigits="2"  maxFractionDigits="2" />
			<p:ajax process="@this" update="totalServico"  event="keyup"  listener="#{cadastroServicoBean.calcularValorComDesconto}" />
		</p:inputText>
		
		<p:outputLabel value="Total Bruto" style="font-weight:bold; font-size:10pt;" />
		<h:outputLabel id="totalServico"  style="font-weight:bold; font-size:10pt;" value="R$ #{cadastroServicoBean.servico.valor}">
			<f:convertNumber type="currency" />
		</h:outputLabel>
		
		<p:outputLabel value="desconto"  for="desc" />
		<p:inputText id="desc" value="#{cadastroServicoBean.servico.desconto}"  styleClass="moeda" size="5">
			<f:convertNumber minFractionDigits="2"  maxFractionDigits="2" />
			<p:ajax process="@this" event="keyup" update="totalComDesconto" listener="#{cadastroServicoBean.calcularValorComDesconto}" />
		</p:inputText>

		<p:outputLabel value="Total c/ Desconto" style="font-weight:bold; font-size:10pt;" />
		<h:outputLabel id="totalComDesconto" style="font-weight:bold; font-size:10pt;"  value=" R$ #{cadastroServicoBean.servico.totalComDesconto}">
			<f:convertNumber type="currency" />
		</h:outputLabel>	

Meu Bean

    @Getter
@Setter
private Servico servico;

public void inicializa() {
		if (this.servico == null) {
			limpar();
		}
	public void calcularValorComDesconto(){
			this.servico.calcularValorComDesconto();
	}

Modelo

@Min(value=0)
@Column(name="valor",nullable = false, precision = 10, scale =2)
private BigDecimal valor = BigDecimal.ZERO;
@Min(value=0)
@Column(name="desconto",nullable = false, precision = 10, scale =2)
private BigDecimal desconto= BigDecimal.ZERO;
@Min(value=0)
@Column(name="total_com_desconto",nullable = false, precision = 10, scale =2)
private BigDecimal totalComDesconto= BigDecimal.ZERO;

/**
	 * Método que calcula valor total do serviço  e subtraindo com desconto.
	 */
	public void calcularValorComDesconto(){
		totalComDesconto = totalComDesconto.add(this.getValor())
                                               .subtract(this.getDesconto());
	}

O Problema ficou o Seguinte: quando informo o valor de Desconto ele mostra um numero negativo muito estranho.