private IChordNode closetPrecedingNode(IKey id) {
        for (int i = KeyImpl.KEY_LENGTH; i > 0; i--) {
            try {
                if (fingers[i] != null && fingers[i].isActive()) {
                    if (fingers[i].getId().isBetween(getId(), id.decreaseOne())) {
                        return fingers[i];
                    }
                } else {
                    fingers[i] = null;
                }
            } catch (RemoteException ex) {
                // Fingers i is now dead, set it to null and wait fix fingers to fix it
                fingers[i] = null;
            }
        }
        return this;
    }