Rotating a CharacterControl towards a direction with slerp

I am currently creating simple AI for an enemy npc using finite-state-machines. The npc consists of a Geometry enemy, which is controlled with CharacterControl known as enemyControl. At the same time, I also have a node known as enemyNode. It is translated to wherever the enemyControl is currently at on the physics space. This node controls any kinematic objects I have positioned near the enemyControl.

I would like to have both the enemyControl and enemyNode rotate towards the camera (basically the vector would be cam.getDirection().negate()). I am trying to do this using a solution posted on this thread, but I am having problems with getting the enemyControl’s viewDirection to equal the desired vector. Here is the code:

[java]
case FIND:
//in FIND state, setup rotations and desired direction

//more or less the same code as the solution in the linked thread
//enemy is the CharacterControlled Geometry being rotated
goalRotation = enemy.getWorldRotation().clone();
    Vector3f enemyUp = enemy.getLocalRotation().mult(Vector3f.UNIT_Y);
    goalDirection = cam.getDirection().negate().normalize();
    goalRotation.lookAt(goalDirection, enemyUp);
    currentRotation = enemy.getLocalRotation().clone();
    
//change states when done
    enemyState = CustomStates.TURN;
               
    break;

case TURN:
//in TURN state, rotate towards the desired direction
//using slerp

//print out some values for analysis
    System.out.println("Goal values");
    System.out.println(goalDirection);
    System.out.println(goalRotation);
    System.out.println("End values");
    System.out.println(enemyControl.getViewDirection());
    System.out.println(currentRotation);
    System.out.println(enemy.getLocalRotation());
    System.out.println(enemyNode.getLocalRotation());

//more modified code, with the addition of setting the
//enemyControl's viewDirection

//getting the current amount to rotate with
    currentRotation.slerp(goalRotation, 0.1f*tpf);

//rotate the enemyControl, and at the same time the enemy Geometry
    enemyControl.setViewDirection(currentRotation.mult(enemyControl.getViewDirection()));

//rotate the enemyNode to have the same rotation as the enemy Geometry
    enemyNode.setLocalRotation(enemy.getLocalRotation().clone());
                
    //stop rotating and change states only when the enemyControl
//successfully looks at the desired direction
    if (enemyControl.getViewDirection().equals(goalDirection))
    {
                    
    	enemyState = CustomStates.ATTACK;
    }  
                
    break;

[/java]

Here are also some data from the println code.
[java]
//In order the values represent:
// -desired vector direction, goalDirection
// -desired end rotation, goalRotation
// -current view direction of enemyControl
// -current value rotation is at, currentRotation
// -the rotation of enemy Geometry
// -the rotation of enemyNode

I/System.out(13326): Goal values
I/System.out(13326): (-1.235651E-4, -6.092042E-4, -0.9999998)
I/System.out(13326): (-1.88191E-8, 0.99999994, -3.0460212E-4, -6.1782564E-5)
I/System.out(13326): End values
I/System.out(13326): (0.0, 0.0, 1.0)
I/System.out(13326): (0.0, 0.0, 0.0, 1.0)
I/System.out(13326): (0.0, 0.0, 0.0, 1.0)
I/System.out(13326): (0.0, 0.0, 0.0, 1.0)
I/System.out(13326): Goal values
I/System.out(13326): (-1.235651E-4, -6.092042E-4, -0.9999998)
I/System.out(13326): (1.88191E-8, -0.99999994, 3.0460212E-4, 6.1782564E-5)
I/System.out(13326): End values
I/System.out(13326): (-0.017274918, -4.5778602E-8, 0.99985075)
I/System.out(13326): (1.6255527E-10, -0.008637781, 2.6310868E-6, 0.9999627)
I/System.out(13326): (2.288845E-8, -0.008637782, 1.977128E-10, 0.9999627)
I/System.out(13326): (0.0, 0.0, 0.0, 1.0)
I/System.out(13326): Goal values
I/System.out(13326): (-1.235651E-4, -6.092042E-4, -0.9999998)
I/System.out(13326): (1.88191E-8, -0.99999994, 3.0460212E-4, 6.1782564E-5)
I/System.out(13326): End values
I/System.out(13326): (-0.066547066, -6.7646766E-7, 0.9977834)
I/System.out(13326): (4.640367E-10, -0.024657749, 7.5108032E-6, 0.999696)
I/System.out(13326): (3.3804633E-7, -0.033291984, 1.1260473E-8, 0.9994457)
I/System.out(13326): (2.288845E-8, -0.008637782, 1.977128E-10, 0.9999627)
I/System.out(13326): Goal values
I/System.out(13326): (-1.235651E-4, -6.092042E-4, -0.9999998)
I/System.out(13326): (1.88191E-8, -0.99999994, 3.0460212E-4, 6.1782564E-5)
I/System.out(13326): End values
I/System.out(13326): (-0.14498733, -3.2213031E-6, 0.98943365)
I/System.out(13326): (7.422575E-10, -0.03944171, 1.20140285E-5, 0.99922186)
I/System.out(13326): (1.606391E-6, -0.07268592, 1.17071686E-7, 0.99735487)
I/System.out(13326): (3.3804633E-7, -0.033291984, 1.1260473E-8, 0.9994457)
[/java]

I am guessing that I am taking and applying the wrong rotation values to rotate with during FIND state. I could also be doing my exit condition wrong. In any case, I am stumped and would like help if possible.

Also as can be noticed, goalRotation is being modified for some reason, but I have no idea what is modifying it as the only instances it is used aside from during initialization is within the posted code. There was a previous variation of my code which assigned the currentRotation to goalRotation, which was even weirder.