import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
         return FilenameUtils.getExtension(fileName).equals(XML_EXTENSION);
     }
 
-    private void setMeasInfoFromMeasType(MeasInfo currentMeasInfo,  List<MeasInfo> filteredMeasInfos, Filter filter) {
-        MeasValue currentMeasValue = currentMeasInfo.getMeasValue()
-                .get(0);
-        List<R> measResultsRNodes = currentMeasValue.getR();
-        Map<BigInteger, R> mappedR = measResultsRNodes.stream()
-                .collect(Collectors.toMap(R::getP, Function.identity()));
-        List<R> filteredRs = new ArrayList<>();
-        List<MeasType> filteredMeasTypes = currentMeasInfo.getMeasType()
-                .stream().filter(mt -> {
-                    List<String> measTypeFilters = filter.getMeasTypes();
-                    if (measTypeFilters.contains(mt.getValue())) {
-                        filteredRs.add(mappedR.get(mt.getP()));
-                        return true;
-                    }
-                    return false;
-                })
+    private boolean hasMatchingResults(List<MeasType> filteredMeasTypes, MeasValue measValue ) {
+        List<R> filteredResults = new ArrayList<>();
+
+        filteredMeasTypes.forEach( mst ->
+            measValue.getR().stream()
+                .filter(r -> mst.getP().equals(r.getP()))
+                .findFirst()
+                .ifPresent(filteredResults::add)
+        );
+
+        boolean hasResults  = !filteredResults.isEmpty();
+        if(hasResults) {
+           measValue.replaceR(filteredResults);
+        }
+       return hasResults;
+    }
+
+    private void setMeasInfoFromMeasType(MeasInfo currentMeasInfo, List<MeasInfo> filteredMeasInfos, Filter filter) {
+        List<MeasType> filteredMeasTypes = currentMeasInfo.getMeasType().stream()
+                .filter(mt -> filter.getMeasTypes().contains(mt.getValue()))
                 .collect(Collectors.toList());
-        if (!filteredMeasTypes.isEmpty()) {
+
+        if(!filteredMeasTypes.isEmpty()) {
+            List<MeasValue> filteredMeasValues = currentMeasInfo.getMeasValue().stream()
+                    .filter( mv -> hasMatchingResults(filteredMeasTypes, mv))
+                    .collect(Collectors.toList());
             currentMeasInfo.replaceMeasType(filteredMeasTypes);
-            currentMeasValue.replaceR(filteredRs);
+            currentMeasInfo.replaceMeasValue(filteredMeasValues);
             filteredMeasInfos.add(currentMeasInfo);
         }
-
     }
 
     private void setMeasInfosFromMeasTypes(MeasInfo currentMeasInfo, List<MeasInfo> filteredMeasInfos, Filter filter) {
 
                 this.measType = filteredMeasTypes;\r
             }\r
 \r
+            public void replaceMeasValue(List<MeasValue> filteredMeasValues) {\r
+                this.measValue = filteredMeasValues;\r
+            }\r
+\r
         }\r
 \r
 \r
 
         assertEquals(expected, actual);
     }
 
+    @Test
+    void multiple_measValues() {
+        String inputPath = baseDir + "meas_type_and_r_manyMeasvalue";
+        String filteredString = EventUtils.fileContentsToString(Paths.get(inputPath + "_filtered.xml"));
+        Event event = generateEvent(inputPath, generateValidFilter());
+
+        MeasCollecFile f = converter.convert(filteredString);
+        String expected = converter.convert(f);
+        objUnderTest.filterByMeasType(event);
+
+        String actual = converter.convert(event.getMeasCollecFile());
+        assertEquals(expected, actual);
+    }
+
     @Test
     void valid_fileType() {
         Event event = mock(Event.class);
 
--- /dev/null
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">\r
+    <fileHeader fileFormatVersion="32.435 V10.0" vendorName="FooBar Ltd" dnPrefix="some dnPrefix">\r
+        <fileSender localDn="Dublin"/>\r
+        <measCollec beginTime="2018-10-02T12:00:00+01:00"/>\r
+    </fileHeader>\r
+    <measData>\r
+        <managedElement localDn="Dublin" swVersion="r0.1"/>\r
+        <measInfo measInfoId="some measInfoId">\r
+            <job jobId="jobId"/>\r
+            <granPeriod duration="PT900S" endTime="2018-10-02T12:15:00Z"/>\r
+            <repPeriod duration="PT900S"/>\r
+            <measTypes></measTypes>\r
+            <measType p="1">a</measType>\r
+            <measType p="2">b</measType>\r
+            <measType p="3">c</measType>\r
+            <measValue measObjLdn="some measObjLdn 1">\r
+                <r p="1">1</r>\r
+                <r p="2">2</r>\r
+                <suspect>false</suspect>\r
+            </measValue>\r
+            <measValue measObjLdn="some measObjLdn 2">\r
+                <r p="88">88</r>\r
+                <r p="99">99</r>\r
+                <suspect>false</suspect>\r
+            </measValue>\r
+            <measValue measObjLdn="some measObjLdn 3">\r
+                <r p="1">111</r>\r
+                <r p="2">222</r>\r
+                <suspect>false</suspect>\r
+            </measValue>\r
+        </measInfo>\r
+    </measData>\r
+    <fileFooter>\r
+        <measCollec endTime="2018-10-02T12:15:00+01:00"/>\r
+    </fileFooter>\r
+</measCollecFile>
\ No newline at end of file
 
--- /dev/null
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">\r
+    <fileHeader fileFormatVersion="32.435 V10.0" vendorName="FooBar Ltd" dnPrefix="some dnPrefix">\r
+        <fileSender localDn="Dublin"/>\r
+        <measCollec beginTime="2018-10-02T12:00:00+01:00"/>\r
+    </fileHeader>\r
+    <measData>\r
+        <managedElement localDn="Dublin" swVersion="r0.1"/>\r
+        <measInfo measInfoId="some measInfoId">\r
+            <job jobId="jobId"/>\r
+            <granPeriod duration="PT900S" endTime="2018-10-02T12:15:00Z"/>\r
+            <repPeriod duration="PT900S"/>\r
+            <measTypes></measTypes>\r
+            <measType p="1">a</measType>\r
+            <measType p="2">b</measType>\r
+            <measValue measObjLdn="some measObjLdn 1">\r
+                <r p="1">1</r>\r
+                <r p="2">2</r>\r
+                <suspect>false</suspect>\r
+            </measValue>\r
+            <measValue measObjLdn="some measObjLdn 3">\r
+                <r p="1">111</r>\r
+                <r p="2">222</r>\r
+                <suspect>false</suspect>\r
+            </measValue>\r
+        </measInfo>\r
+    </measData>\r
+    <fileFooter>\r
+        <measCollec endTime="2018-10-02T12:15:00+01:00"/>\r
+    </fileFooter>\r
+</measCollecFile>
\ No newline at end of file