Based on the discussion in the comments and your updated code, I suggest you try doing something like this:
// oldPosition is a member variable, it holds the real position of the
// object (without the "wobble" applied).
Vector2 newPosition = oldPosition;
newPosition.X += velocity * (float)Math.Cos(radians);
newPosition.Y += velocity * (float)Math.Sin(radians);
// This gives us a vector from the old position to the new position, indicating
// the direction our object is moving.
Vector2 direction = newPosition - oldPosition;
// We normalize the perpendicular vector so that we can scale it reliably later.
Vector2 perpendicular = new Vector(direction.Y, -direction.X);
float offset = 5.0f * (float)Math.Sin(sinPosAng);
sinPosAng += 0.01;f
// By keeping spritePos independent from oldPosition, we allow the wobble to visually
// affect the object without logically affecting it's real location; this prevents
// the wobble from feeding back on to itself.
spritePos = newPosition + (offset * perpendicular);
// For the next frame, the old position will be what is currently the new position.
oldPosition = newPosition;
If you have a perpendicular vector and you normalize it, you can then scale it by the result of
Math.Sin(sinePosAng) and then scale it again to achieve the desired total offset, which you then add to the new position. The purpose of the normalization is to ensure the scale is reliable each frame -- you know the length of the vector before you scale it, so you know the results will be exactly what you expect.
The other thing you'll want to watch out for is that you may want to the old/new positions distinctly from the offset position (after the "wobble" is applied) -- this is because otherwise the "wobble" applied on frame N will factor in to the computation of the direction vector on frame N + 1 and if the scale of the wobble is large enough, you're object may start to curve in an undesired fashion. In the example above, I assume that both
spritePos are member variables --
spritePos will contain the location of the sprite (which has the wobble applied), but
oldPosition contains the un-wobble'd position.