public BusResult estimaTempoBR(double lat,double lon,double lat_d,double lon_d){
		synchronized(Activebuses){
			
		
		Coord coord = new Coord(lat,lon); 
		Coord coord_d = null;
		if(lat_d!=0 && lon_d !=0)
			coord_d = new Coord(lat_d,lon_d); 
		
		PositionMetric posmetr = rotaCrt.calcDistPercorrida(coord);
		int distOrigem = (int) posmetr.minDistAteRota;		//Distancia do ponto de Origem  a linha em metros.
		int metragemOrigem = (int) posmetr.distPercorrida;

		int tviagem=-1; 		//Tempo estimado de viagem em segundos do ponto de origem ao ponto de destino.
		int distDestino=-1;	//Distancia do ponto de Destino a linha em metros.
		int dviagem=-1;		//Distancia do ponto da linha de Origem ao Ponto da linha de destino em metros.
		if(coord_d !=null){
			PositionMetric posmetr_d = rotaCrt.calcDistPercorrida(coord_d);
			int metragemDestino = (int) posmetr_d.distPercorrida;
			if(metragemDestino > metragemOrigem){
				distDestino=(int) posmetr_d.minDistAteRota;
				dviagem=metragemDestino-metragemOrigem;	
				tviagem = (int) estim.tempoEstimado(metragemOrigem, metragemDestino);
			}	
		}
		
		
		BusResult ret = new BusResult(distOrigem, distDestino, tviagem, dviagem);
		 
		Enumeration<String> keys = Activebuses.keys();
		long  agora = getCurrentSeconds();
		while(keys.hasMoreElements()){
			
			BusInfo businfo = Activebuses.get(keys.nextElement());
			
			if(businfo.notReady())//Se amostra nao for a primeira, nao deve ser usada
				continue;
			
			if(businfo.measureDeltaDist(metragemOrigem)<=0.0)//Se distancia ao usuario for negativa, N~oa serve pois esta a frente
				continue;
			
			long tempocheg = businfo.getTimeStamp() + (long)estim.tempoEstimado(businfo.getB(), metragemOrigem);
			
			if(tempocheg <= agora)//Onibus ja passou
				continue;
			
			long tempoUltimoStatus = businfo.getTimeStamp();
			
			float posicaoAgoraEstimada = estim.posicaoEstimada(businfo.getB(),(float)(agora - tempoUltimoStatus));
			
			if((metragemOrigem - posicaoAgoraEstimada)<=0.0)//Se distancia ao usuario for negativa, N~oa serve pois esta a frente
				continue;
			
		
			String busId=businfo.getBusID();	// ID do onibus.
			boolean acess=businfo.getAcess();	// Acessibilidade para deficiente. 
			int estim=(int)  (tempocheg - agora);;		// Tempo estimado para chegada do onibus em segundos.
			int distU=(int) (metragemOrigem - posicaoAgoraEstimada);		// Distancia do onibus ao ponto da linha mais proxima do usuário em metros.		
			ret.new Bus(busId, acess, estim, distU);

		}
		
		
		return ret;
		
		
		}
	}