diff --git a/__pycache__/quickmap.cpython-36.pyc b/__pycache__/quickmap.cpython-36.pyc
index 5941b8d85c574f82e1cb81064e894656e422ef5d..25d45a96a0002e31058294169d422e749b843198 100644
Binary files a/__pycache__/quickmap.cpython-36.pyc and b/__pycache__/quickmap.cpython-36.pyc differ
diff --git a/quickmap.py b/quickmap.py
index 13f8d60a5176511b8098470d59f6246efdcb10f4..b8863c2f69917b69ab7d7656bd2ddfc1ec1dc8a4 100644
--- a/quickmap.py
+++ b/quickmap.py
@@ -17,10 +17,11 @@ def dotMultiply(vctA, vctB):
         ans += a * b
     return ans
 
-def GetMap(parrX, parrY, windowSizeX=12, windowSizeY=8, extendXRate=1, line=False, passO=False, maxXPower=1):
+def GetMap(parrX, parrY, windowSizeX=12, windowSizeY=8, extendXRate=1, extendYRate=1, line=False, passO=False, maxXPower=1, inverseK=False):
     print('Generic-GetMap by Recolic.')
     arrX, arrY = parrX, parrY
-    maxX = max(arrX) * extendXRate
+    maxX, maxY = max(arrX) * extendXRate, max(arrY) * extendYRate
+    minX, minY = min(arrX) * extendXRate, min(arrY) * extendYRate
     # Do calculate
     # y = [k0 k1 k2 ...] dot [x^0 x^1 x^2 ...]
     print('Your input: ', arrX, '|', arrY)
@@ -33,14 +34,18 @@ def GetMap(parrX, parrY, windowSizeX=12, windowSizeY=8, extendXRate=1, line=Fals
             vctX[0] = 0
         return dotMultiply(k, vctX)
 
-    def lossFunc(k, x, y): return lineFunc(k, x) - y
+    def lossFunc(k, x, y): return abs(lineFunc(k, x) - y)
 
     # Fire!
     if line:
         kInit = [1 for _ in range(maxXPower + 1)]
         kInit[0] = 0 # guarantee passO.
-        kFinal, _ = leastsq(lossFunc, kInit, args=(X, Y))
-        print('Fit line done. k=', kFinal)
+        if inverseK:
+            kFinal, _ = leastsq(lossFunc, kInit, args=(Y, X))
+            print('Fit line done. k^-1=', kFinal)
+        else:
+            kFinal, _ = leastsq(lossFunc, kInit, args=(X, Y))
+            print('Fit line done. k=', kFinal)
     else:
         print('Drawing map without fitting a line...')
 
@@ -51,8 +56,12 @@ def GetMap(parrX, parrY, windowSizeX=12, windowSizeY=8, extendXRate=1, line=Fals
     plt.figure(figsize=(windowSizeX, windowSizeY))
     plt.scatter(X, Y, color="red", label="Sample Point", linewidth=3)
     if line:
-        px = numpy.linspace(0, maxX, 1000)
-        py = dotMultiply(kFinal, [px ** power for power in range(maxXPower + 1)])
+        if inverseK:
+            py = numpy.linspace(minY, maxY, 1000)
+            px = dotMultiply(kFinal, [py ** power for power in range(maxXPower + 1)])
+        else:
+            px = numpy.linspace(minX, maxX, 1000)
+            py = dotMultiply(kFinal, [px ** power for power in range(maxXPower + 1)])
         plt.plot(px, py, color="orange", label="Fitting Line", linewidth=2)
     plt.legend()
     plt.grid()
diff --git a/test.py b/test.py
index 86b6559847537ff0239e0e3c0d13f5db9f9f2046..e65e2ac798c07dd3af26ef0667a8e25b895e0581 100644
--- a/test.py
+++ b/test.py
@@ -3,6 +3,5 @@ import quickmap
 yrc=[-6.77, -6.78, -6.78, -6.76, -6.73, -6.73, -6.72, -6.70, -6.69, -6.67, -6.60, -6.45, -6.37, -6.20, -5.99, -5.77, -5.45, -5.07, -3.52, -2.87, -2.36, -2.08, -1.77, -1.55, -1.40, -1.26, -0.97, -0.84, -0.64]
 xrc=[0.0, 2.0, 4.0, 10.0, 20.0, 22.0, 25.0, 30.0, 33.0, 35.0, 37.0, 38.0, 38.5, 39.0, 39.6, 40.0, 40.5, 41.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 53.0, 55.0, 60.0]
 
-for i in range(15):
-    quickmap.GetMap(xrc, yrc, line=True, maxXPower=i, extendXRate=1)
+quickmap.GetMap(xrc, yrc, line=True, maxXPower=16, inverseK=True)