diff --git a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjects.java b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjects.java
index 93931e9..2fae902 100644
--- a/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjects.java
+++ b/asterix-external-data/src/main/java/edu/uci/ics/asterix/external/library/java/JObjects.java
@@ -776,6 +776,9 @@
         public void setField(String fieldName, IJObject fieldValue) {
             int pos = getFieldPosByName(fieldName);
             fields.set(pos, fieldValue);
+            if (value != null) {
+                value.setValueAtPos(pos, fieldValue.getIAObject());
+            }
         }
 
         private int getFieldPosByName(String fieldName) {
diff --git a/asterix-external-data/src/test/java/edu/uci/ics/asterix/external/library/CapitalFinderFunction.java b/asterix-external-data/src/test/java/edu/uci/ics/asterix/external/library/CapitalFinderFunction.java
index 6a12520..7953b62 100644
--- a/asterix-external-data/src/test/java/edu/uci/ics/asterix/external/library/CapitalFinderFunction.java
+++ b/asterix-external-data/src/test/java/edu/uci/ics/asterix/external/library/CapitalFinderFunction.java
@@ -19,11 +19,13 @@
 
 import edu.uci.ics.asterix.external.library.java.JObjects.JRecord;
 import edu.uci.ics.asterix.external.library.java.JObjects.JString;
+import edu.uci.ics.asterix.external.library.java.JTypeTag;
 
 public class CapitalFinderFunction implements IExternalScalarFunction {
 
     private static Properties capitalList;
     private static final String NOT_FOUND = "NOT_FOUND";
+    private JString capital;
 
     @Override
     public void deinitialize() {
@@ -34,9 +36,13 @@
     public void evaluate(IFunctionHelper functionHelper) throws Exception {
         JString country = ((JString) functionHelper.getArgument(0));
         JRecord record = (JRecord) functionHelper.getResultObject();
-        ((JString) record.getValueByName("country")).setValue(country.getValue());
+        //     ((JString) record.getValueByName("country")).setValue(country.getValue());
         String capitalCity = capitalList.getProperty(country.getValue(), NOT_FOUND);
-        ((JString) record.getValueByName("capital")).setValue(capitalCity);
+        //      ((JString) record.getValueByName("capital")).setValue(capitalCity);
+        capital.setValue(capitalCity);
+
+        record.setField("country", country);
+        record.setField("capital", capital);
         functionHelper.setResult(record);
     }
 
@@ -45,6 +51,7 @@
         InputStream in = CapitalFinderFunction.class.getClassLoader().getResourceAsStream("data/countriesCapitals.txt");
         capitalList = new Properties();
         capitalList.load(in);
+        capital = (JString) functionHelper.getObject(JTypeTag.STRING);
     }
 
 }
