protected void precess() {
			double ra1 = pa.getRA() * Math.PI / 12.0;
			double dec1 = pa.getDec() * Math.PI / 180.0;
			
			Vector v = new Vector(Math.cos(dec1)*Math.cos(ra1),
						Math.cos(dec1)*Math.sin(ra1), Math.sin(dec1));

			double epoch1 = pa.getEpoch();
			char etype1 = pa.getEpochType();

			switch (etype1) {
			case 'J':
				epoch1 = erm.JulianEpoch(epoch1);
				break;

			case 'B':
				epoch1 = erm.BesselianEpoch(epoch1);
			}

			double epoch2 = pb.getEpoch();
			char etype2 = pb.getEpochType();

			switch (etype2) {
			case 'J':
				epoch2 = erm.JulianEpoch(epoch2);
				break;

			case 'B':
				epoch2 = erm.BesselianEpoch(epoch2);
			}
			
			Matrix pm = erm.precessionMatrix(epoch1, epoch2);
			
			v.multiplyBy(pm);
			
			double x = v.getX();
			double y = v.getY();
			double z = v.getZ();
			
			double ra2 = Math.atan2(y, x) * 12.0/Math.PI;
			if (ra2 < 0.0)
				ra2 += 24.0;
			
			double cd = Math.sqrt(x*x + y*y);
			
			double dec2 = Math.atan2(z, cd) * 180.0/Math.PI;
			
			pb.setRA(ra2);
			pb.setDec(dec2);
		}