diff --git a/rpc/tendermint/client/client.go b/rpc/tendermint/client/client.go
index 9750b373c8f8978e38af9a6770f54b3c3fdfc7af..0758eb20f487ea230557acf905fe6a55738b6a3b 100644
--- a/rpc/tendermint/client/client.go
+++ b/rpc/tendermint/client/client.go
@@ -141,6 +141,7 @@ func performCall(client rpcclient.Client, method string,
 	return
 
 }
+
 func mapAndValues(orderedKeyVals ...interface{}) (map[string]interface{},
 	[]interface{}, error) {
 	if len(orderedKeyVals)%2 != 0 {
@@ -158,7 +159,7 @@ func mapAndValues(orderedKeyVals ...interface{}) (map[string]interface{},
 		}
 		val := orderedKeyVals[i+1]
 		paramsMap[key] = val
-		paramsSlice = append(paramsSlice, val)
+		paramsSlice[i/2] = val
 	}
 	return paramsMap, paramsSlice, nil
 }
diff --git a/rpc/tendermint/client/client_test.go b/rpc/tendermint/client/client_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..b860fefbd54e5e9d505df49e09939a9237a71ce2
--- /dev/null
+++ b/rpc/tendermint/client/client_test.go
@@ -0,0 +1,34 @@
+package client
+
+import (
+	"testing"
+	"github.com/stretchr/testify/assert"
+)
+
+func TestMapsAndValues(t *testing.T) {
+	type aStruct struct {
+		Baz int
+	}
+	dict, vals, err := mapAndValues("Foo", aStruct{5},
+	"Bar", "Nibbles")
+	assert.Equal(t, map[string]interface{}{
+		"Foo": aStruct{5},
+		"Bar": "Nibbles",
+	}, dict)
+	assert.Equal(t, []interface{}{aStruct{5}, "Nibbles"}, vals)
+
+	// Empty map
+	dict, vals, err = mapAndValues()
+	assert.Equal(t, map[string]interface{}{}, dict)
+	assert.Equal(t, []interface{}{}, vals)
+	assert.NoError(t, err, "Empty mapsAndValues call should be fine")
+
+	// Invalid maps
+	assert.NoError(t, err, "Empty mapsAndValues call should be fine")
+	_, _, err = mapAndValues("Foo", 4, "Bar")
+	assert.Error(t, err, "Should be an error to get an odd number of arguments")
+
+	_, _, err = mapAndValues("Foo", 4, 4, "Bar")
+	assert.Error(t, err, "Should be an error to provide non-string keys")
+
+}