Pagination in a Shortcode. Get_next_posts_link not working but get_previous_posts_link works fine right next to it

This is an old question, but I needed the answer to this one as well. Here is the solution taken right from the WP codex

$prev = '<div class="nav-previous">' . get_next_posts_link( __( '<span class="meta-nav">&larr;</span> Previous' ), $loop->max_num_pages );

You need to append the max_num_pages parameter from the query to your output and it should work as expected from within the shortcode.