Problema ao exibir data

Pessoal

Estou com um problema aqui !

Montei um query para trazer uma data do banco e com o valor dela na minha variavel eu quero exibir essa data - 11 meses ou seja:
19/10/2008 - 19/09/2008 - 19/08/2008 - 19/07/2008
e assim por diante.

Funciona perfeitamente, acontece que se eu atrasar a data da minha maquina em 20H ele passa a exibir essas datas:
18/10/2008 - 18/09/2008 - 18/08/2008 - 18/07/2008

Nao estou encontrando o problema, alguem tem alguma ideia do que pode ser ?

Meu metodo é esse:

SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String mesAtual 	= "";
Calendar calendar 	= new GregorianCalendar();

try {
     query.setSQLString(selectDate.toString());
     lista = (List) getUnitOfWork().executeQuery(query);

    for (Iterator iter = lista.iterator(); iter.hasNext();) {
	Record element = (Record) iter.next();
	extratoVO = new ExtratoVO();

	mesAtual = df.format(element.get("DT_FCH"));
	Date dataAtual = (Date) element.get("DT_FCH");
	extratoVO.setDataFechto(mesAtual);
	listaData.add(extratoVO);

	calendar.setTime((Date) dataAtual);
	for(int i = 1; i < 12; i++) {
   	     extratoVO = new ExtratoVO();

 	     calendar.add(Calendar.MONTH, -1);
	     extratoVO.setDataFechto(df.format(calendar.getTime()));
	listaData.add(extratoVO);
				}
			}

Alguem tem alguma ideia ?

Valew