Buggy code:
public abstract class IRPGObject extends Actor implements Serializable , Comparable < IRPGObject > { private static final long serialVersionUID = 1L ; public static final int FACE_L = 7 ; public static final int FACE_R = 10 ; public static final int FACE_U = 4 ; public static final int FACE_D = 1 ; public transient Image [ ] images ; public int lastWalkSize ; public int lastZ ; public int lastFace ; public int layer ; public int mapx ; public int mapy ; public Vector2 position ; public boolean walked = true ; public IRPGObject ( ) { } public int currentImageNo = 1 ; public int foot = 0 ; public boolean waitWhenCollide = true ; public boolean enableCollide = true ; public Collide collide = new Collide ( ) ; public String imgPath ; public int bodyWidth ; public int bodyHeight ; public List < Walker > walkStack = new ArrayList < Walker > ( ) ; public Image getCurrentImage ( ) { } @ Override public int compareTo ( IRPGObject i ) { } public void draw ( SpriteBatch batch , float parentAlpha ) { } public IRPGObject ( String path , int width , int height ) { } public static Image [ ] generateImages ( String txt , int width , int height ) { } public IRPGObject turn ( int face ) { } public float walkSpeed = 3.0F ; private Vector2 lastPosition ; public IRPGObject walk ( int step ) { } public int getCurrentFace ( ) { } private int NEXT_FOOT = 0 ; private int lastx ; private int lasty ; private int lastlength ; @ Override public void act ( float f ) { } public boolean isStop ( ) { } public boolean toWalk ( ) { if ( ! ( walked ) ) { lastlength = 0 ; switch ( getCurrentFace ( ) ) { case IRPGObject . FACE_D : { if ( ( Math . abs ( ( ( lastPosition . y ) - ( position . y ) ) ) ) == 48 ) { if ( ( testWalk ( ) ) == null ) return false ; } else if ( ( ( Math . abs ( ( ( lastPosition . y ) - ( position . y ) ) ) ) + ( walkSpeed ) ) <= 48 ) position . y -= walkSpeed ; else { position . y -= 48 - ( Math . abs ( ( ( lastPosition . y ) - ( position . y ) ) ) ) ; return true ; } break ; } case IRPGObject . FACE_U : { if ( ( Math . abs ( ( ( lastPosition . y ) - ( position . y ) ) ) ) == 48 ) { if ( ( testWalk ( ) ) == null ) return false ; } else if ( ( ( Math . abs ( ( ( lastPosition . y ) - ( position . y ) ) ) ) + ( walkSpeed ) ) <= 48 ) position . y += walkSpeed ; else { position . y += 48 - ( Math . abs ( ( ( lastPosition . y ) - ( position . y ) ) ) ) ; return true ; } break ; } case IRPGObject . FACE_L : { if ( ( Math . abs ( ( ( lastPosition . x ) - ( position . x ) ) ) ) == 48 ) { if ( ( testWalk ( ) ) == null ) return false ; } else if ( ( ( Math . abs ( ( ( lastPosition . x ) - ( position . x ) ) ) ) + ( walkSpeed ) ) <= 48 ) position . x -= walkSpeed ; else { position . x -= 48 - ( Math . abs ( ( ( lastPosition . x ) - ( position . x ) ) ) ) ; return true ; } break ; } case IRPGObject . FACE_R : { if ( ( Math . abs ( ( ( lastPosition . x ) - ( position . x ) ) ) ) == 48 ) { if ( ( testWalk ( ) ) == null ) return false ; } else if ( ( ( Math . abs ( ( ( lastPosition . x ) - ( position . x ) ) ) ) + ( walkSpeed ) ) <= 48 ) position . x += walkSpeed ; else { position . x += 48 - ( Math . abs ( ( ( lastPosition . x ) - ( position . x ) ) ) ) ; return true ; } break ; } } if ( ( NEXT_FOOT -= walkSpeed ) <= 0 ) { if ( ( ++ ( foot ) ) == 3 ) foot = - 1 ; <START_BUG> NEXT_FOOT = 50 ; <END_BUG> } } return false ; } public Boolean testWalk ( ) { } public boolean walkAble ( ) { } private void testWalkerSize ( ) { } public void setWalkSpeed ( float s ) { } public float getWalkSpeed ( ) { } public int getCurrentFoot ( ) { } @ Override public float getX ( ) { } @ Override public float getY ( ) { } @ Override public float getWidth ( ) { } @ Override public float getHeight ( ) { } public IRPGObject generatePosition ( int mapx , int mapy , int layer ) { } public static int getReverseFace ( int face ) { } public int getReverseFace ( ) { } public void dispose ( ) { } }

Fix:
NEXT_FOOT = ( ( int ) ( ( walkSpeed ) * 16 ) ) ;