diff --git a/lib/geocoder/query.rb b/lib/geocoder/query.rb
index c8e8c298d07e2d3c7a067712245e8eda417d6aae..242ff0e7018ca9ea58d361bf884b4fddf94d47e9 100644
--- a/lib/geocoder/query.rb
+++ b/lib/geocoder/query.rb
@@ -32,7 +32,7 @@ module Geocoder
     # appropriate to the Query text.
     #
     def lookup
-      if ip_address?
+      if options[:ip_address] || ip_address?
         name = options[:ip_lookup] || Configuration.ip_lookup || Geocoder::Lookup.ip_services.first
       else
         name = options[:lookup] || Configuration.lookup || Geocoder::Lookup.street_services.first
diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb
index 3b63b462dc98e9deeed9c46d2c0e4da00c4039d5..d54ff20e8b78729ccdc321660c234946d2ff9ca9 100644
--- a/test/unit/query_test.rb
+++ b/test/unit/query_test.rb
@@ -49,4 +49,17 @@ class QueryTest < GeocoderTestCase
     query = Geocoder::Query.new("address", :lookup => :nominatim)
     assert_equal Geocoder::Lookup::Nominatim, query.lookup.class
   end
+
+  def test_force_specify_ip_address
+    Geocoder.configure({:ip_lookup => :google})
+    query = Geocoder::Query.new("address", {:ip_address => true})
+    assert !query.ip_address?
+    assert_equal Geocoder::Lookup::Google, query.lookup.class
+  end
+
+  def test_force_specify_ip_address_with_ip_lookup
+    query = Geocoder::Query.new("address", {:ip_address => true, :ip_lookup => :google})
+    assert !query.ip_address?
+    assert_equal Geocoder::Lookup::Google, query.lookup.class
+  end
 end