I have a contract datafactorycontract that calls another contract dataproducercontract. For that, in datafactorycontract I have a mapping that stores the address of the dataproducercontract being its name the key.I create the dataproducercontract on my own and then pass the address and the name to a function in the datafactorycontract. Code:

contract DataBankFactory

 address owner;
 mapping (string => address) dataProducerContracts;

    // Constructor
 function DataBankFactory()
    owner = msg.sender;

 function setProducer (string name, address add) returns (bool)
    if(msg.sender == owner)
        dataProducerContracts[name] = add;
        NewProducerContractAdded (name);
        return true;

 function getProducerAddress (string name) returns (address)
    return dataProducerContracts[name];

contract DataBankProducerContract
 string pname;
 uint balance;
 function DataBankProducerContract(string name, uint initbalance)
    pname = name;
    balance = initbalance;


Then, in javascript, I try to get the address of the contract stored:

var factoryAddress = HARDCODED_VALUE;
var hcproducerAddress = HARDCODED_VALUE;
var producerAddress;

factory= web3.eth.contract(ABIFACTORY).at(factoryAddress);

var producerAddress = factory.getProducerAddress(sender);
console.log('hardcoded producer address:' + hcproducerAddress);
console.log('obtained producer address:' + producerAddress); 

being the result different:

hardcoded producer address:0x2a5e1E82bBf8CeEfacb72c3103Cb531942d36cC8
obtained producer address:0x03e29a82321f451f674edbd85178b4fe7013b43ca0376868903cecdd2649f48c

This last "address" varies every time

Does anybody know what I am doing wrong here? I've checked examples, and it looks things are done like this. I do not know what is it I am getting when I retrieve the address.