Improved NIF initialization.
diff --git a/src/jiffy.erl b/src/jiffy.erl
index d47a670..fb080eb 100644
--- a/src/jiffy.erl
+++ b/src/jiffy.erl
@@ -79,18 +79,15 @@
 
 
 init() ->
-    SoName = case code:priv_dir(?MODULE) of
-        {error, bad_name} ->
-            case filelib:is_dir(filename:join(["..", priv])) of
-                true ->
-                    filename:join(["..", priv, ?MODULE]);
-                _ ->
-                    filename:join([priv, ?MODULE])
-            end;
-        Dir ->
-            filename:join(Dir, ?MODULE)
+    PrivDir = case code:priv_dir(?MODULE) of
+        {error, _} ->
+            EbinDir = filename:dirname(code:which(?MODULE)),
+            AppPath = filename:dirname(EbinDir),
+            filename:join(AppPath, "priv");
+        Path ->
+            Path
     end,
-    erlang:load_nif(SoName, 0).
+    erlang:load_nif(filename:join(PrivDir, "jiffy"), 0).
 
 
 not_loaded(Line) ->